当前位置: 首页 > 知识库问答 >
问题:

DefaultMessageListenerContainer的Spring JMS消息转换器

谢麒
2023-03-14

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

闾丘坚诚
2023-03-14

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

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

因此,是的,对于一个简单的消息侦听器,它被忽略了。

 类似资料:
  • 使用MVC Java编程配置方式时,如果你想替换Spring MVC提供的默认转换器,完全定制自己的HttpMessageConverter,这可以通过覆写configureMessageConverters()方法来实现。如果你只是想定制一下,或者想在默认转换器之外再添加其他的转换器,那么可以通过覆写extendMessageConverters()方法来实现。 下面是一段例子,它使用定制的Ob

  • 我通过SpringJMS在我的项目中使用MQ,作为代理我使用ActiveMQ。我需要基于消息设置过期,所以我尝试使用,但没有成功。所有到达ActiveMQ的消息都具有expiration=0。 有人成功地使用Spring为每个消息设置过期吗?

  • 我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。 在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitM

  • 我有Kafka-Connect,我需要将其与REST API集成,该API在使用单输入多数据模型调用时效果最好。 想象一下以下内容: 源主题- Kafka源主题: REST请求: REST响应: Kafka Sink主题: 所以我想在给定的时间范围内转换多个消息。 Kafka-Connect转换(https://docs.confluent.io/current/connect/transform

  • 我正在尝试使用Spring进行GET http请求。 我的主要班级: 使用CatMessage类: 我应该得到回来,因为我使用不工作的用户名和密码组合(和这个服务器部分工作正常),是: { } 我认为这应该行得通,因为我几乎是在复制Spring for Android的基本auth项目 但是发生的是解析的问题(我认为)。当然,我已经包含了Jackson和Spring依赖项,所以我不希望我的问题出现

  • 我正在使用RestTemboard类发布到基于JSON的RESTful Web服务。我可以从留档中看到,可以有几个MessageConverters可用于RestTem板实例。我面临的问题是,客户端似乎出于某种原因选择使用基于XML的转换器。“内容类型”标头设置为应用程序/XML,消息主体包含我想作为JSON发送的对象的XML表示。如何最容易地配置我的RestTemboard实例,以便为我的请求使