7

Oracle で AQ を作成し、キューをリッスンするために Java で 2 つの JMS コンシューマーを作成しました。キューにメッセージを生成すると、時々観察しました。キューから取り出されたメッセージの数が、キューに入れられた数よりも多くなっています。これは、一部のメッセージが 2 回消費されることを意味します。

プロパティでキューを作成しました:- multiple_consumers => FALSE

そして JMS コンシューマはCLIENT_ACKNOWLEDGE mode

このような動作の考えられる理由とその解決策を教えてください。したがって、問題を再現して上記の問題を解決し、複数の JMS コンシューマが同じ AQ をリッスンしている場合に、キューに入れられたメッセージの数がキューから取り出されたメッセージの数と同じになるようにします。

4

1 に答える 1

3

コードを見たことがない場合は、CLIENT_ACKNOWLEDGE通常、確認応答を手動で送信していると言います。ack を送信しない場合、メッセージは削除されず、ブローカーは後の段階 (接続の再起動時など) にメッセージを再配信しようとします。これがあなたの懸念の原因かもしれません。

于 2013-05-11T07:46:39.137 に答える