I have a queue with two different Class type say BusinessUser and NormalUser. How can I cast them to their respective type?
@JmsListener(destination = "destination")
public void receiveMessageForEmailService(Object object) {
if (object instanceof BusinessUser) {
// do something
}
if (object instanceof NormalUser) {
// do something
}
}
None of the if statements evaluate to true.
Message will be sent from a class having two method which will be something like this:
public void sendJsonMessage(BusinessUser businessUser){
jmsTemplate.convertAndSend("destination", businessUser);
}
public void sendJsonMessage(NormalUser normalUser){
jmsTemplate.convertAndSend("destination", normalUser);
}
Configuration class will be:
@Configuration
@EnableJms
public class JmsConfig {
public static final String queue = "queueName";
@Bean
public ActiveMQConnectionFactory activeMQConnectionFactory(){
return new ActiveMQConnectionFactory();
}
@Bean
public CachingConnectionFactory cachingConnectionFactory() {
CachingConnectionFactory cachingConnectionFactory =
new CachingConnectionFactory(activeMQConnectionFactory());
cachingConnectionFactory.setSessionCacheSize(10);
return cachingConnectionFactory;
}
@Bean
public JmsTemplate jmsTemplate(){
JmsTemplate jmsTemplate = new JmsTemplate(activeMQConnectionFactory());
jmsTemplate.setMessageConverter(messageConverter());
return jmsTemplate;
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(activeMQConnectionFactory());
factory.setMessageConverter(messageConverter());
return factory;
}
@Bean
public MessageConverter messageConverter(){
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
Map<String, Class<?>> typeIdMappings = new HashMap<String, Class<?>>();
typeIdMappings.put("businessUser", BusinessUser.class);
typeIdMappings.put("normalUser", NormalUser.class);
converter.setTypeIdMappings(typeIdMappings);
return converter;
}
}