1

CLIENT_ACKNOWLEDGEJMSのプロデューサー側で使用することは可能ですか?では、それはどういう意味ですか?つまり、認めることは消費者側の何かです。

4

1 に答える 1

2

いいえ、メッセージの確認は純粋に消費者側の概念です。JMSセッションを作成するときは、いくつかの確認応答モードから選択できます。メッセージ確認応答の背後にある考え方は、メッセージ指向ミドルウェア(MOM)での確実な配信の概念と関係があります。つまり、MOM実装を介してメッセージを送信すると、そのメッセージは、コンシューマーに送信され、コンシューマーが配信を確認するまで(またはメッセージの有効期限が切れるまで)、(プロデューサーによって)保持されます。妥当な時間内にコンシューマーが確認応答を受信しなかった場合、メッセージはプロデューサーによって再送信されます。各モードは、メッセージ配信に異なる影響を与えます。

AUTO_ACKNOWLEDGEモードでは、セッションを通じてコン​​シューマーが受信したメッセージは、受信時にJMSランタイムの基礎となるコンシューマーによって自動的に確認応答されます。

CLIENT_ACKNOWLEDGEモードでは、セッションを通じてコン​​シューマーが受信する各メッセージを明示的に確認する必要があります。これは、メッセージを確認する責任が、JMSランタイムではなくアプリケーションにあることを意味します。acknowledge()通常、コンシューマーは、メソッドでメッセージを処理した後、セッションでメソッドを呼び出す必要がありますonMessage()

AUTO_ACKNOWLEDGEに似たDUPS_OK_ACKNOWLEDGE設定もありますが、代わりに確認応答がJMS実装によって遅延送信されるため、メッセージの重複受信が発生する可能性があります。

通常、メッセージの確認応答を明示的に制御する必要がある場合は、CLIENT_ACKNOWLEDGEモードを使用します。

于 2012-09-21T11:35:12.253 に答える