RabbitMQチュートリアルの「メッセージ耐久性」の部分を確認しました。しかし、このメモがあります:
メッセージを永続的としてマークしても、メッセージが失われないことが完全に保証されるわけではありません。メッセージをディスクに保存するように RabbitMQ に指示しますが、RabbitMQ がメッセージを受け入れてまだ保存していない短い時間枠があります。また、RabbitMQ はすべてのメッセージに対して fsync(2) を実行しません。キャッシュに保存されるだけで、実際にはディスクに書き込まれない場合があります。
しかし、本当に耐久性のあるキューが必要な場合はどうすればよいでしょうか? どのベスト プラクティスを使用できますか? たとえば、メッセージが 2 分以内に ACK されなかった場合、データベースに「キュー」と cron による「リセンダー」を設定する必要がありますか? より良い解決策はありますか?
また、コンシューマーがメッセージを処理した後、ACK を送信する前にクラッシュした場合はどうなりますか?
UPD: 私の質問は、クラスタリングの質問の「重複の可能性」としてマークされました。これらの問題を解決するためにクラスターがどのように役立つかはわかりません。