2

バックグラウンド

Langohr (バージョン 3.4.0) で RabbitMQ からのメッセージを消費し、それらを MongoDB に永続化しようとします。auto-ackMongoDB でメッセージを永続化できなかった場合、後で再試行できるようにするため、使用していません。これに対応するためにack-unless-exception 関数を使用しています。今夜、MongoDB は一時的に中断され、40 個のメッセージを永続化できず、RabbitMQ キューに保持された短い期間ダウンしました。しかし、MongoDB が再び起動したとき、Langohr ハンドラは新しいメッセージを受信しました。アプリケーションを再起動する前に、古いものは配信されませんでした。

質問

アプリケーションを再起動せずに、RabbitMQ に以前の nack:ed メッセージを Langohr で再配信させるにはどうすればよいでしょうか?

4

1 に答える 1

1

配信されなかったメッセージは、自動的に再配信されません。recoverを見てみたいと思います 。このメソッドは、未処理のメッセージを再配信する必要がある RabbitMQ に通知します。これを行うときは、アーキテクチャによって異なります

于 2015-11-11T12:24:05.237 に答える