私はこれをグーグルしようとしましたが、成功していません。 AUTO_ACKNOWLEDGE
を使用していて、Javaで書かれたコンシューマクライアントがある場合、メッセージはいつ承認されますか? MessageListener
メソッドを含むonMessage
を使用しています。 onMessage
が完了する前、またはonMessage
が完了した後、または他の時点で、確認応答がサーバーに送信されますか?だれでも提供できるヘルプを事前にありがとう!
これをチェックしてください one 。
_AUTO_ACKNOWLEDGE
_モードでは、肯定応答は常に、onMessage()
ハンドラーが戻った後に暗黙的に発生する最後のことです。メッセージを受信するクライアントは、消費するセッションで_CLIENT_ACKNOWLEDGE
_モードを指定することにより、保証されたメッセージの配信をより細かく制御できます。
_CLIENT_ACKNOWLEDGE
_を使用すると、確認応答が送信されるタイミングをアプリケーションで制御できます。たとえば、アプリケーションはメッセージを確認し、それによってJMSプロバイダーの義務を軽減し、メッセージで表されるデータをさらに処理することができます。その鍵となるのは、リスト1に示すように、Messageオブジェクトのacknowledge()メソッドです。
acknowledge()
メソッドは、メッセージがコンシューマーによって正常に受信されたことをJMSプロバイダーに通知します。このメソッドは、確認プロセス中にプロバイダーの障害が発生した場合、クライアントに例外をスローします。プロバイダーの障害により、メッセージはJMSサーバーによって再配信のために保持されます。
CLIENT_ACKNOWLEDGE
この確認モードでは、クライアントはメッセージの確認メソッドを呼び出して、消費されたメッセージを確認します。
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
...
msg = (TextMessage) consumer.receive();
//acknowledge
msg.acknowledge();
AUTO_ACKNOWLEDGE
この確認応答モードでは、セッションは、call to receiveからセッションが正常に戻ったとき、またはセッションがメッセージを処理するために呼び出したメッセージリスナーが正常に戻ったときに、クライアントによるメッセージの受信を自動的に確認します。
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);