2017-03-31 7 views
0

は、私はその春ウサギのメッセージの消費量、ペイロード間違ったフォーマット

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

ようRabbitMQの中でキューからメッセージを消費しています、私は私のロガーで印刷していたデータは、それがそのような値を印刷して、バイトのようです:116,104,114,116,104,114,116,104,114 私は何をしなければならないとどのようなものですか?デシリアライゼーション?

答えて

1

デフォルトのSimpleMessageConverterは、文字列およびシリアライズされたJavaオブジェクトのみを処理できます。理解できないコンテンツタイプは、byte []として返されます。

文字列のcontent_typetext/plainである必要があります。

メッセージの内容は何ですか?メッセージにcontent_typeのプロパティがありますか?もしそうなら、どんな価値がありますか?

JSON(およびapplication/json)の場合はJackson2JsonMessageConverterが必要ですが、文字列が必要であることがわかります。そのため、ちょうど不足しているのはcontent_typeプロパティです。

+0

実際、ペイロードはjson形式です。テストするために、私はrabbitmqのWebインターフェイスを使ってメッセージを公開しました。あなたが提案したように、欠落しているcontent_typeを追加しました。だから私はまだ_Jackson2JsonMessageConverter_が必要です。このコンバージョンをどこに追加しますか? – Grandmaster

+0

私はそれを見つけました。関数の引数を 'public void processOrder(メッセージメッセージ、@Header(AmqpHeaders.CONSUMER_QUEUE)String queue){' – Grandmaster

関連する問題