1

私はこれを達成しようとしています。それが可能かどうかを知るには、非常に多くの相反する答えがあります。

前のリンクによると、それは不可能です。しかし、このフォーラムの別の質問で、誰かがこことここのコメント セクションでできたと述べました。

それで、 live queue => dead-letter-queue => live queue を行うことは可能ですか

または、これを実現するために特定のバージョンの RabbitMq を使用する必要がありますか?

私ができること: live queue => dead-letter-queue および dead-letter-queue => live queue.

4

1 に答える 1

2

aliveドキュメントによると、デッドレターの有効期限が切れている場合は実行できません...

配信不能キューのサイクルを形成することができます。たとえば、デッドレタールーティングキーを指定せずに、キューがデフォルトの交換にデッドレターメッセージを送信すると、これが発生する可能性があります。このようなサイクルのメッセージ (つまり、同じキューに 2 回到達するメッセージ)は、サイクル全体がメッセージの期限切れによるものである場合、ドロップされます

(私の強調)。

からのデッドレタリングaliveが拒否によるものであるテストを実行しましたが、問題なく動作します。数サイクル後、x-deathヘッダーは次のようになります...

reason: rejected
queue:  alive
time:   1419448981
exchange:   req
routing-keys:   alive

reason: expired
queue:  dead
time:   1419448981
exchange:   dlx
routing-keys:   alive

reason: rejected
queue:  alive
time:   1419448976
exchange:   req
routing-keys:   alive

reason: expired
queue:  dead
time:   1419448976
exchange:   dlx
routing-keys:   alive

...

これをテストするために、Spring AMQP リスナーを強制的に失敗させて に設定defaultRequeueRejectedしましたfalse

于 2014-12-24T19:29:09.133 に答える