如何在 JMS 中使用带有 MessageListener 的消息转换器?
Posted
技术标签:
【中文标题】如何在 JMS 中使用带有 MessageListener 的消息转换器?【英文标题】:How to use message converters with MessageListener in JMS? 【发布时间】:2018-02-22 22:58:49 【问题描述】:我正在使用 JmsTemplate 来转换和发送事件对象。我已经用 JmsTemplate 注册了 MappingJackson2MessageConverter。
Event event;
jmsTemplate.convertAndSend(topic, event);
我正在使用DefaultMessageListenerContainer
并从该主题获取消息。我不知道如何将此消息转换回我的对象?
我的 JmsTemplate 消息转换器是
public MessageConverter jacksonJmsMessageConverter()
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
我曾尝试调用MappingJackson2MessageConverter
并将此消息对象传递给转换,但没有成功。
如何将收到的消息对象转换为我想要的自定义对象?
@Bean
public DefaultMessageListenerContainer listenerContainer()
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setDestinationName(COMMENT_QUEUE);
container.setPubSubDomain(true);
container.setMessageListener(new AcListenerSubscriber());
container.start();
return container;
【问题讨论】:
【参考方案1】:MessageConverter
仅在您使用 @JmsListener
注释创建侦听器时应用。
对于像您的AcListenerSubscriber
这样的MessageListener
,它会被忽略。
【讨论】:
以上是关于如何在 JMS 中使用带有 MessageListener 的消息转换器?的主要内容,如果未能解决你的问题,请参考以下文章
带有 Active-MQ 的 Mule 发布/订阅模型。如何在 Active-MQ JMS 中的消息到达时以异步方式调用 tomcat-consumers
JMS 选择器,用于在带有 Camel 和蓝图的一个标头中具有下划线的消息