7

我试图让一个简单的队列处理程序与 Spring Cloud 框架一起工作。但是,我已经成功地让消息处理程序轮询队列。我看到的问题是,当我向队列发布消息时,我的处理程序无法将有效负载解组到所需的 java 对象中。

@MessageMapping("MyMessageQueue")
@SuppressWarnings("UnusedDeclaration")
public void handleCreateListingMessage(@Headers Map<String, String> headers, MyMessage message) {
    //do something with the MyMessage object
}

我得到的错误是

No converter found to convert to class MyMessage

据我了解,@MessageMapping 应该使用 Jackson 将我的 JSON 有效负载解组为 MyMessage 对象。但是它抱怨它找不到转换器。

有没有人遇到过这个?

我正在使用 Spring Cloud 的 1.0.0.BUILD-SNAPSHOT 版本。

4

1 回答 1

11

只有在 SQS 消息上contentType设置了带有值的标头时才使用 Jackson 。application/json否则,转换器不知道消息的有效负载中包含什么类型的内容,并且无法选择正确的转换器。

如果您在参考应用程序QueueMessagingTemplate#convertAndSend中使用as ,将自动设置标题。contentType

于 2015-01-03T11:08:12.017 回答