Spring DefaultMessageListenerContainer 的 JMS 消息转换器
Spring JMS message converter for DefaultMessageListenerContainer
springJMS中的DefaultMessageListenerContainer
class有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 回调中处理转换?如果我错了,请纠正我。
它仅在创建容器以支持 @JmsListener
注释时使用 - 转换器从容器工厂转移到容器,然后转移到用于调用的 MessagingMessageListenerAdapter
带注释的 POJO 方法。
容器只是通过容器工厂配置适配器的管道。
所以,是的,它被忽略了一个简单的 MessageListener
。
springJMS中的DefaultMessageListenerContainer
class有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 回调中处理转换?如果我错了,请纠正我。
它仅在创建容器以支持 @JmsListener
注释时使用 - 转换器从容器工厂转移到容器,然后转移到用于调用的 MessagingMessageListenerAdapter
带注释的 POJO 方法。
容器只是通过容器工厂配置适配器的管道。
所以,是的,它被忽略了一个简单的 MessageListener
。