DefaultMessageListenerContainer

时间:2016-11-27 22:27:31

标签: jms spring-jms

spring JMS中的DefaultMessageListenerContainer类具有setter方法 setMessageConverter(...)允许提供我们想要的任何转换器。

对于带注释的消息监听器,这是有意义的,因为我们可以直接定义

@JmsListener(destination = "myDestination")
public void processOrder(MyConvertedType data) { ... }

和spring将负责转换并将消息传递给此侦听器。

因此,对于带注释的侦听器来说,这显然是有意义的。我的问题是,设置一个消息转换器对非注释的消息监听器有用吗?像

这样的东西
public void registerListener(String queueName, MessageListener listener) {
        DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setMessageConverter(getMessageConverter());
        container.setDestinationName(queueName);
        container.setMessageListener(listener);
        container.initialize();
        container.start();
}

从我在docs / javadocs中的搜索以及对源代码的有限理解,我认为为这种情况设置一个消息转换器是没有用的,即消息转换不会由spring处理。转换必须在传递的MessageListener回调中处理?如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

仅在创建容器以支持grouped <- group_by(wage_by_gender_2015, sex, region) dplyr::summarise(grouped, FUN = lb_weighted_median_dplyr(wage, exp_region)) 注释时使用它 - 转换器从容器工厂传输到容器,然后传递到@JmsListener,用于调用带注释的POJO方法

容器只是通过容器工厂配置适配器的管道。

所以,是的,对于一个简单的MessagingMessageListenerAdapter,它被忽略了。