2つのRabbitMQノードのクラスタで作業しており、RabbitMQ Javaドライバを使用してノードと対話しています。ヘッダーバインディングと永続キューに基づいてメッセージをキューに送信する「ヘッダー」交換を使用しています。RabbitMQの複数のノードにキューを定義する
問題は、1つのノードに対してキューが定義されていることです。何らかの理由でこのノードがクラッシュした場合、このノードのキューに到着するメッセージは失われます。
キューホームノードを保持している別のノードが到達不能であることを検出した場合、RabbitMQにキューホームノードを変更するよう通知する方法はありますか?そして、ノードが再び現れたときにメッセージを回復するには?
今のところ、この問題を解決するために高可用性キューを使用していますが、パフォーマンスはかなり悪いです。
はい、これを試しました。ノードが再び起動したときにノードがクラッシュする前に配信されたメッセージを回復します。しかし、ノードが停止している場合、このノードをホーム・ノードとするキューは、ノードが再び起動するまで、新しいメッセージを無視しています。 – Kraiss