2017-03-31 87 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