私のプログラムはかなりゆっくりとメッセージを受け取ります。そして、それらすべてを受信してすべてを確認するまで、キューに保持したいと考えています。たくさんのメッセージを受信するまで、十分なメッセージがあるかどうかはわかりません。
私の質問: 2 番目のメッセージを配信する前に、最初のメッセージからの確認応答を待って、キューはブロックされますか?
確認モードをに設定すると、Session.CLIENT_ACKNOWLEDGE
必要な数のメッセージを受け取ることができます。メッセージはサーバー上でロックされるため、他のコンシューマーはその間メッセージを取得できません。したがって、答えはノーです。キューはブロックされません(それを実行できるプロバイダー固有の設定がある場合でも、私にはわかりません)。
ただし、一度に確認できるのは一度だけです。したがって、10個のメッセージを受信し、そのうちの1つを確認すると(どちらでも構いません)、すべてのメッセージが確認されます。
参照を確認してくださいメッセージ確認の制御
サンプル プロデューサー/コンシューマー コードを使用して、これをテストしました。コンシューマーには実際にいくつかのコードがあります (ClientAcknowledge に切り替えた場合)。大量のメッセージ (10 件) を受信し、最後のメッセージのみを確認します。