2016-07-27 15 views
0

私はJmsMessagingTemplate.convertSendAndReceive()を使用するクライアントを使用してメッセージを送信し、応答を待ちます。サーバー側では同期から非同期のJMSメッセージ処理への変更

messagingTemplate.convertSendAndReceive(myDest, myRequestObj, 
       RequestObj.class); 

、私が持っている:

@JmsListener(destination = "myDest") 
protected Message<MyResponseObj> handleRequest(final RequestObj requestObj) { 
    return MessageBuilder.withPayload(newMyresponseObj) 
      .setHeader(myHost)).build(); 
} 

これが正常に動作します。

私はasynchrously今、これを実行したいと思います。私はまだ、サーバーが応答を返送したい、と私はまだ、クライアントがそれを受信したい、私はちょうど、クライアントはそれを待つ必要はありません。

クライアント側ではMyResponseObj@JMSListenerを設定できます。私はちょうどJmsMessagingTemplate.convertAndSend()ではなく、convertSendAndReceiveを呼び出すために私のクライアント側を変更するだろうか?サーバー側の変更を行う必要がありますかhandleRequest()

クライアントが非同期に応答を受け取るように設定するために必要な変更はありますか?

答えて

0

はい、convertAndSend()は非同期メッセージを送信します。クライアントは答えを待ちません。

サーバはの回答を別のキューに送信することができ、クライアントはこれを聞くことができます。

回答 -queueには、別のの宛先が必要です。

@JmsListener(destination = "question")(サーバー側)と@JmsListener(destination = "answer")(クライアント側)。