@ RabbitListener` @ SendTo`回复在返回`org.springframework.messaging.Message <!-?->时不起作用

时间:2018-08-07 17:16:05

标签: spring-amqp

我一直在成功使用一种方法,该方法返回带有@RabbitListener批注的业务对象。

名为Jackson2JsonMessageConverter的注册messageConverter bean启动,并将输入的JSON消息完美地转换为我期望的类型,并将返回的业务对象完美地转换为JSON。

// This works!!
@RabbitListener(...)
@SendTo("#{responseDestination})
MyBusinessResponseObject handle(MyBusinessRequestObject request) {
  ...
  ...
  ...
}

但是现在,当我开始返回org.springframework.messageing.Message<MyBusinessResponseObject>时,我在日志中看到了异常:SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.xxx.xxx.xxx.domain.MyBusinessResponseObject

// This DOESN'T work
@RabbitListener(...)
@SendTo("#{responseDestination})
Message<MyBusinessResponseObject> handle(MyBusinessRequestObject request) {
  ...
  ...
  ...
}

我尝试在SimpleRabbitListenerContainerFactory批注的@RabbitLisener属性中显式引用我的containerFactory,但是仍然遇到相同的错误。

我不确定在这种情况下为什么要踢SimpleMessageConverter,以及它来自何处。

如何覆盖用于转换新返回类型的消息转换器?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个错误;请打开一个JIRA Issue