私はRabbitMQからのメッセージを処理できる作業者に取り組んでいます。MQRabbit Queueの最後にメッセージを入れる方法
しかし、私はこれを達成する方法が不明です。
エラーメッセージが表示され、処理中にエラーが発生した場合、どのようにメッセージをキューの最後に置くことができますか?
私はnackや拒否を使用しようとしていますが、メッセージは常に最初の位置に再入力され、他のメッセージはフリーズします。
メッセージが最初の位置になければならない理由はわかりませんが、私はキューまたはAllupToのような他のオプションで "再生"しようとしていますが、どれも動作していないようです。
ありがとうございます!
なぜack()は処理されたメッセージもエラーもありませんか?メッセージが処理された後で肯定応答が返されなければなりません。そうでない場合、処理前または処理中や処理中に問題が発生した場合、このメッセージは失われてキューから削除されます。メッセージを再キューに入れるか破棄するかは、メッセージを拒否して決定する必要があります。 –
処理前または処理後のメッセージをack()するときは、そのすべてがビジネス要件に依存します。 スクリプトが終了/終了する前に実行する最後のフェールオーバーコードとしてエラーまたは例外が発生した場合、メッセージをキューに戻すことができます。 キューの後ろにメッセージを置くシナリオがあり、すべてではない場合、 は処理後にack()/ nack()/ republishを保持できます。 処理の最後に、最後にack/nackを選択するか、メッセージを再発行することができます。 –