2

ActiveMQ を使用してクライアント/ワーカー システムを実装しており、手動のメッセージ確認とメッセージ拒否を実装したいと考えています。

メッセージを拒否する理由 ワーカーにやってくるタスクが多すぎる場合、そのワーカーがブローカに元のメッセージを再度キューに入れるように指示するようにします。

トランザクションを自動承認または実装する方法があることは知っていますが、次のような方法が望ましいです。

  1. メッセージは 5 秒以内に確認する必要があります
  2. 承認されない場合、ブローカーはメッセージを別のワーカーに送信します
  3. Works はいつでもメッセージを手動で拒否できます

これを実装するにはどうすればよいですか (メッセージをブローカーに手動で再送信するだけではありません)。

アップデート:

質問を少し言い換えると、 未確認のメッセージがキューに再度追加されることを確認するにはどうすればよいですか (また、以前は確認していなかった同じ消費者に再配信を戻すことができます-消費者がオフラインになってから戻ってきたとします) )

4

1 に答える 1

3

キューに関する ActiveMQ Web ページ:

コンシューマがメッセージを受信し、閉じる前に確認応答しない場合、メッセージは別のコンシューマに再配信されます。

それがあなたの望みですよね?したがって、AUTO_ACKNOWLEDGEMENT モードをオフにして、別のモードを使用する必要があります: CLIENT_ACKNOWLEDGE またはおそらくより選択的な INDIVIDUAL_ACKNOWLEDGE です。

メッセージを拒否することは (まだ) 不可能です。ActiveMQ-Docuを参照してください。

JMS 'unacknowledge' はありません。

于 2013-10-09T07:10:37.303 に答える