问题描述
DirectMessage
的某些属性在被 MessageListener 接收时为空。某些导致接收时将值设置为 null 的原因。
Producer Class
public class MessageQueueTemplate extends JmsGatewaySupport{
void sendMessage(final DirectMessage directMessage) {
getjmstemplate().send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
ObjectMessage message = session.createObjectMessage();
message.setobject(directMessage);
return message;
}
});
}
}
MessageListener Implementation to consume message
public class MessageQueueListener implements MessageListener {
@Autowired
MessageOperations messageOperations;
@Override
public void onMessage(Message message) {
ObjectMessage objMsg = (ObjectMessage) message;
try {
DirectMessage dmObj = (DirectMessage) objMsg.getobject();
try {
messageOperations.handleMessage(dmObj);
} catch (DuplicateMessage duplicateMessage) {
duplicateMessage.printstacktrace();
}
} catch (JMSException e) {
throw JmsUtils.convertJmsAccessException(e);
}
}
}
Message Send Config
@Configuration
@EnableTransactionManagement
public class MessageQueueConfig {
@Bean
public ConnectionFactory connectionFactory() {
return new ActiveMQConnectionFactory("tcp://localhost:61616"); }
@Bean
public jmstemplate jmstemplate() {
jmstemplate jmstemplate = new jmstemplate();
jmstemplate.setConnectionFactory(connectionFactory());
jmstemplate.setDefaultDestinationName("queue.message");
return jmstemplate;
}
@Bean
public MessageQueueOperations messageQueueOperations() {
MessageQueueTemplate queueTemplate = new MessageQueueTemplate();
queueTemplate.setjmstemplate(jmstemplate());
return queueTemplate;
}
}
Message Listener Config
@Configuration
@EnableTransactionManagement
public class MessageQueueListenerConfig {
@Bean(name = "messageQueueListenerConnFactory")
public ConnectionFactory connectionFactory() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
connectionFactory.setTrustAllPackages(true);
return connectionFactory;
}
@Bean
public MessageQueueListenerTemplate messageQueueListenerTemplate() {
return new MessageQueueListenerTemplate(); }
@Bean
public DefaultJmsListenerContainerFactory orderDefaultJmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory
.setConnectionFactory(connectionFactory());
factory.setConcurrency("3-10");
return factory;
}
@Bean
public DefaultMessageListenerContainer container() {
SimpleJmsListenerEndpoint endpoint =
new SimpleJmsListenerEndpoint();
endpoint.setMessageListener(messageQueueListenerTemplate());
endpoint.setDestination("queue.message");
return orderDefaultJmsListenerContainerFactory()
.createListenerContainer(endpoint);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)