代码之家  ›  专栏  ›  技术社区  ›  nemo

`@返回'org.springframework.messaging.message<?时,rabbitlistener``@sendto`回复不起作用。>

  •  0
  • nemo  · 技术社区  · 6 年前

    我已经成功地使用了一个方法,该方法用 @RabbitListener 注释。

    注册的 Jackson2JsonMessageConverter bean命名 messageConverter 启动并完美地将传入的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 回复  |  直到 6 年前
        1
  •  1
  •   Gary Russell    6 年前

    这是一个虫子,请打开一个 JIRA Issue .