0

私はrabbitMQを使用しています.basic_getを使用してキューからすべてのメッセージを取得し、自動的にackする手順はありません。つまり、メッセージをackまたはnackするまで、メッセージはキューに残ります。

例外がスローされたために処理できないメッセージがあり、メッセージが完全に処理されないことがあります。

このような場合、すぐに 2 回やり直して、それでも処理できない場合は、1 時間間隔でさらに 3 回やり直したいと思います。すべて失敗した場合は、メッセージをキューから永久に削除します。

質問は、rabbitMQ にメッセージの再試行 (再試行の回数もカウントする) を提供するメカニズムと、再試行がいつ開始されるかを選択する機能 (ある種の延期メカニズム) があるかどうかです。

4

1 に答える 1

1

そのためには、複数のキューを使用する必要があります。

同様の問題がありました。その問題を処理した方法は、問題が発生したメッセージを別のキューに移動することです。

例外がスローされた場合は、それをキャッチし、メッセージを確認して、たとえば error_queue_1 に移動します。error_queue_1 を処理する 2 番目のリスナー (別のタイマーを使用) をセットアップできます。

そして、そのプロセスを必要と感じる回数だけ繰り返すことができます。

これにより、問題があったメッセージの数、どのメッセージなどを把握することもできます。

于 2015-03-01T12:16:49.120 に答える