如何在 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

带有 tibco jms 监听器的 Spring Boot

JMS 选择器,用于在带有 Camel 和蓝图的一个标头中具有下划线的消息

JavaEE- 带有 JMS 和 MDB 的消息传递系统

如何将 JMS 消息从 WildFly 10 发送到远程 ActiveMQ

麻烦:WAS - 带有 JMS 适配器的 Worklight