【发布时间】:2016-11-27 22:27:30
【问题描述】:
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 回调中处理转换?如果我错了,请纠正我。
【问题讨论】:
标签: jms spring-jms