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

Spring JMS json消息转换器

安承教
2023-03-14

我在使用spring-jms模块转换来自RabbitMQ的消息时遇到了一些问题。以前,我使用Rest APIendpoint发送消息,该endpoint将消息发送到RabbitMQ队列,并使用@JMSListener方法处理它。

在内部,这种行为添加了一个字段来确定Java类型,由Spring库管理。但是,现在我想避免Rest API调用,因为它不是必需的,而且我可以直接将消息发送到RabbitMQ。

   @Bean
   public MessageConverter jacksonJmsMessageConverter() {
      MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
      converter.setTargetType(MessageType.TEXT);
      converter.setTypeIdPropertyName("_type");
      return converter;
   }

侦听器示例代码:

 @JmsListener(concurrency = "listener.concurrency", destination = "queue.name", containerFactory = "container.factory")
 public void processFile(MyDtoClass dto) {
    ....
 }

共有1个答案

印飞捷
2023-03-14

子类化转换器并重写getJavaTypeFormessage()以返回所需类型...

/**
 * Determine a Jackson JavaType for the given JMS Message,
 * typically parsing a type id message property.
 * <p>The default implementation parses the configured type id property name
 * and consults the configured type id mapping. This can be overridden with
 * a different strategy, e.g. doing some heuristics based on message origin.
 * @param message the JMS Message to set the type id on
 * @throws JMSException if thrown by JMS methods
 * @see #setTypeIdOnMessage(Object, javax.jms.Message)
 * @see #setTypeIdPropertyName(String)
 * @see #setTypeIdMappings(java.util.Map)
 */
protected JavaType getJavaTypeForMessage(Message message) throws JMSException {
 类似资料:
  • 使用MVC Java编程配置方式时,如果你想替换Spring MVC提供的默认转换器,完全定制自己的HttpMessageConverter,这可以通过覆写configureMessageConverters()方法来实现。如果你只是想定制一下,或者想在默认转换器之外再添加其他的转换器,那么可以通过覆写extendMessageConverters()方法来实现。 下面是一段例子,它使用定制的Ob

  • Spring JMS中的类具有setter方法,它允许提供我们想要的任何转换器。 对于带注释的消息侦听器,这很有意义,因为我们可以直接定义 spring将负责将消息转换并传递给这个侦听器。 因此,这对于带注释的听者来说显然是有意义的。我的问题是,设置消息转换器对非注释消息侦听器有用吗?类似于 从我在docs/javadocs中的搜索和对源代码的有限理解来看,我认为为这种情况设置消息转换器是没有帮助

  • 我正在尝试将单个输入消息转换为多个消息。我有一个带有以下签名的方法: 类类似于: 对于中的每个,我想创建一个的实例。我如何做到这一点并处理

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

  • 在将我们的一个服务升级到2.0.0.rc3时,当试图使用一个使用较旧版本-ditmars的服务生成的消息时,我们遇到了一个异常。发行版: 错误31241---[container-4-C-1]O.S.Integration.Handler.LoggingHandler:org.SpringFramework.Messaging.Converter.MessageConversionExceptio

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