我正在尝试使用
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版本.
解决方法
只有在SQS消息上使用值application / json设置了contentType标头时才使用Jackson.否则,转换器不知道消息的有效负载中包含什么类型的内容,并且不能选择正确的转换器.
如果您在reference application中使用QueueMessagingTemplate#convertAndSend,则会自动设置contentType标头.