2

私のプログラムはかなりゆっくりとメッセージを受け取ります。そして、それらすべてを受信して​​すべてを確認するまで、キューに保持したいと考えています。たくさんのメッセージを受信するまで、十分なメッセージがあるかどうかはわかりません。

私の質問: 2 番目のメッセージを配信する前に、最初のメッセージからの確認応答を待って、キューはブロックされますか?

4

2 に答える 2

0

確認モードをに設定すると、Session.CLIENT_ACKNOWLEDGE必要な数のメッセージを受け取ることができます。メッセージはサーバー上でロックされるため、他のコンシューマーはその間メッセージを取得できません。したがって、答えはノーです。キューはブロックされません(それを実行できるプロバイダー固有の設定がある場合でも、私にはわかりません)。

ただし、一度に確認できるのは一度だけです。したがって、10個のメッセージを受信し、そのうちの1つを確認すると(どちらでも構いません)、すべてのメッセージが確認されます。

参照を確認してくださいメッセージ確認の制御

于 2013-01-29T08:09:15.353 に答える
0

サンプル プロデューサー/コンシューマー コードを使用して、これをテストしました。コンシューマーには実際にいくつかのコードがあります (ClientAcknowledge に切り替えた場合)。大量のメッセージ (10 件) を受信し、最後のメッセージのみを確認します。

于 2013-01-28T20:06:44.900 に答える