2017-06-16 54 views
1

複数のインスタンスにノードを持つRabbitMQクラスタ(HAなし)をセットアップしました。ドキュメントから、私が理解したことは、クラスタモードでは、キューはミラー化されておらず、キューが宣言されているノードによって所有されているということです。RabbitMQクラスタリングノードの障害

今、問題は、キューを所有するノードがダウンするとどうなりますか?キューがミラーリングされていないので間違っていれば修正してください。クライアントアプリケーションはキューが見つからないために投げ捨てられます。

ノードがダウンしたかどうかを判断するロジックを記述すると、キューを再宣言する必要があります。この場合、メッセージはどうなりますか?

+0

をスローされません宣言するか否かを決定する。 –

答えて

1

これで、キューを所有しているノードがダウンするとどうなりますか? docsから

のRabbitMQが終了するか、あなたがいないためにそれを指示しない限り、それはキューとメッセージを忘れてしまうクラッシュします。メッセージが失われないようにするには、キューとメッセージの両方を耐久性のあるものとしてマークする必要があります。

次の質問:

我々は、ノードがダウンした場合に把握するために、当社のロジックを記述する必要があり、キューが再宣言する必要があり、この場合には、何がメッセージに起こるのだろうか?

はい、キューを再宣言することをお勧めします。

ノードがダウンすると、接続されているすべてのコンシューマが切断されます。消費者が接続するたびに、キューが存在しないと仮定して、それが接続されたときに最初の要求としてdeclare queue要求を起動する必要があります。

消費者が送信した場合、その後declare queue要求とキューdoes exist

  • declare queueは、どのような方法で、キューの メッセージには影響しません。メッセージが持続された場合、メッセージはキュー内で引き続き になります。通常の状況下では

  • (あなたはキューの プロパティを変更しない場合)エラーがノードがキューが死んで、死んでキューを所有している場合、メッセージdead.Youが存在することを確認することができ