2016-11-27 53 views
0

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

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

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

和弹簧将采取消息转换和传递给此侦听的护理。

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

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(); 
} 

从我的文档/ JavaDoc文档和源代码的了解有限搜索一些东西,我觉得设置消息转换为这种情况下是没有帮助的,即信息转换将不会被弹簧处理。转换必须在传递的MessageListener回调中处理?纠正我,如果我错了。

回答

1

仅在创建容器以支持@JmsListener注释时使用它 - 将转换器从容器工厂传送到容器,然后转到用于调用带注释的POJO方法的MessagingMessageListenerAdapter

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

所以,是的,它被忽略了一个简单的MessageListener