この2つのリンクに続くメッセージキューの処理を遅らせる予定ですlink1link2。したがって、リンクに示唆されているように。私はx-dead-letter-exchange
とx-dead-letter-routing-key
引数を持つ元のキューを宣言しました。メッセージがコンシューマによって処理されなかったか、またはttlが発生したか、キューの長さが超過したときに、いわゆるdead-letter-queue
にメッセージを公開しました。 dead-letter-queue
では、類似の引数がttl
パラメータと共に設定されています。 ttl
を超過した後にメッセージを元のキューに再パブリッシュするとします。しかし問題は、すべてのメッセージを削除していることです。デッドレターメッセージがttl後に元のキューに再キューイングされない
さらに、ここにキャッチがあります。失敗したメッセージを元のキューからデッドレターキューに明示的に発行するとします。次に、ttlの後、メッセージを元のキューに再発行します。それはなぜそうであり、どうすればそれを機能させるのですか?デッドレターキューは、メッセージをドロップする代わりに元のキューに再発行するようにします。私はRabbitMQ 3.0.0
を使用しています。キューがそのキュー内のメッセージがデッドレター交換に送信されることを意味TTL設定(DLXを持っている場合はFYI、私は、ルーティングキー
提案したことを行うのではなく、 'x-dead-letter-exchange'と' 'x-dead-letter-routing-key'の助けを借りずに、失敗したメッセージを元のキューからデッドレターキューに明示的に公開することもできます。また、dead-letter-queueは、ttlの後に元のキューにメッセージを再発行します。だから、私はメッセージを明示的に、そして組み込みの機能を介して公開することの違いを理解できません。 – Naresh
説明する方法は、単一のキューがある場合にのみ機能します。私のリンクでは、その方法はN個のキューをデッドレターで1つの再試行キューにするために機能します。 – jhilden
とにかく、メッセージを明示的に公開したり、組み込み機能を使用したりすることに違いがあるのはなぜですか。任意のアイデア – Naresh