2014-12-31 19 views
7

Spring Cloudフレームワークで動作する単純なキューハンドラを取得しようとしています。私は、メッセージハンドラをキューにポーリングすることに成功しました。私が見ている問題は、キューにメッセージを投稿するときに、ハンドラがペイロードを必要なJavaオブジェクトにアンマーシャリングするのに失敗していることです。Spring Cloud - SQS

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

私は取得していますエラーは、私の理解では、@MessageMappingはMyMessageオブジェクトに私のJSONペイロードをアンマーシャリングするためにジャクソンを使用する必要があります

No converter found to convert to class MyMessage 

です。しかしそれはそれがコンバータを見つけることができないという不満。

誰かがこれを見かけますか?

私はSpring Cloudの1.0.0.BUILD-SNAPSHOTバージョンを使用しています。

答えて

11

contentTypeヘッダーがSQSメッセージの値application/jsonに設定されている場合にのみ、ジャクソンが使用されます。さもなければ、コンバータは、メッセージのペイロードにどのようなタイプのコンテンツが含まれているかを知らず、正しいコンバータを選択することもできません。

reference applicationのようにQueueMessagingTemplate#convertAndSendを使用すると、contentTypeヘッダーが自動的に設定されます。

+0

これをクリアしていただきありがとうございます。 contentTypeヘッダーを追加した後、MyMessageオブジェクトが期待通りに作成されていることを確認できます。 – Slihp

関連する問題