Spring JMS JSON消息转换器

时间:2019-03-04 16:16:52

标签: java rabbitmq jms spring-jms

我在使用 spring-jms 模块从 RabbitMQ 转换消息时遇到一些问题。以前,我使用Rest API终结点发送消息,此终结点将消息发送到RabbitMQ队列并使用 @JmsListener 方法对其进行处理。

此行为在内部添加了一个字段来确定Java类型,该字段由Spring库管理。但是,现在我想避免进行Rest API调用,因为没有必要,我可以直接将消息发送到RabbitMQ。

问题是当spring尝试为 @JmsListener 参数转换JMS消息时。我没有在消息上设置类型,因为发件人不需要该信息,但是现在我不能直接转换它,因为 MappingJackson2MessageConverter 想要一个属性。

如何避免此问题?我希望能够处理所有消息而无需知道所有“发件人”中的类型。

消息转换器bean:

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

答案 0 :(得分:0)

子类化转换器并覆盖ScreenManager以返回所需的类型...

getJavaTypeForMessage()