2017-03-31 66 views
0

我消费从队列中的消息在RabbitMQ的那样春兔消息消耗,有效载荷格式错误

@RabbitListener(queues = "#{'${rabbitmq.queues}'.split(',')}") 
public void processOrder(@Payload String data, @Header(AmqpHeaders.CONSUMER_QUEUE) String queue) { 

我在我的记录器打印的数据似乎是字节,它是印刷值这样的:116,104,114,116,104,114,116,104,114 我该怎么做,怎么样?反序列化?

回答

1

默认SimpleMessageConverter只能处理字符串和序列化的Java对象。任何不理解的内容类型都将返回为byte []。

字符串的content_type应该是text/plain

你的信息内容是什么?该消息是否具有content_type属性?如果是这样,什么价值?

如果是JSON(和application/json),您需要Jackson2JsonMessageConverter,但我看到您期待String,所以我怀疑它只是缺少的content_type属性。

+0

实际上,负载是json格式。为了测试,我只是使用rabbitmq的web界面发布消息,并且正如您所建议的,我添加了缺少的content_type。所以我仍然需要_Jackson2JsonMessageConverter_。我应该在哪里添加此转换? – Grandmaster

+0

我已经找到它了,我只需要修改函数参数为'public void processOrder(Message message,@Header(AmqpHeaders.CONSUMER_QUEUE)String queue){' – Grandmaster