如何在JMS中使用带有MessageListener的消息转换器?

时间:2017-09-14 05:11:01

标签: java spring-boot jms spring-jms

我正在使用JmsTemplate转换和发送事件对象。我已经使用JmsTemplate注册了MappingJackson2MessageConverter。

Event event;
jmsTemplate.convertAndSend(topic, event);

我正在使用DefaultMessageListenerContainer并从该主题获取消息。我不知道如何将此邮件转换回我的对象​​?

我的JmsTemplate的messageconverter是

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 个答案:

答案 0 :(得分:0)

仅当您使用MessageConverter批注创建侦听器时才应用@JmsListener

MessageListener这样的AcListenerSubscriber情况下,它将被忽略。