0

メッセージを失いたくないRabbitMQとSpring amqpを使用しています。再試行に指数関数的なバックオフ ポリシーを使用することで、コンシューマーが処理できるメッセージに取り組んでいる可能性があるコンシューマーをブロックする可能性があります。指数関数的なバックオフ ポリシーで失敗したメッセージを数日間再試行したいのですが、コンシューマーが数日間ブロックされることは望ましくなく、他のメッセージを処理し続けたいと考えています。

ActiveMQ(将来のある時点でメッセージを再試行する (ActiveMQ) )を使用してこの種の機能を実現できることはわかっていますが、RabbitMQ で同様のソリューションを見つけることができませんでした。

Spring amqp と RabbitMQ でこれを達成する方法はありますか?

4

1 に答える 1

0

デッドレター交換を介して行うことができます。メッセージを拒否して DLE/DLQ にルーティングし、DLQ から消費する別のリスナー コンテナーを用意し、必要に応じてそのコンテナーを停止/開始します。

または、2 番目のコンテナの代わりに、RabbitTemplate receive(またはreceiveAndConvert) メソッドを使用して (スケジュールに従って) DLQ をポーリングし、失敗したメッセージをプライマリ キューに戻すことができます。

于 2014-06-27T21:41:09.193 に答える