2016-08-11 1 views
1

私はRabbitMQを研究しています。使い方。RabbitMQのメッセージバッキングストアはグローバルですか?

内部についてのドキュメントによると、メッセージストアはメッセージの内容を保持し、キューはメッセージへのインデックスのみを保持します。

したがって、同じメッセージが複数のキューにルーティングされるとき、メッセージの内容は複製されず、そのキュー内のメッセージに参照(メッセージID)を保持して一度だけ保管されます。

次に、異なるマシンに属する複数のキューにメッセージがエンキューされるとどうなりますか?メッセージはいずれかのマシンにのみ保存されますか?

この質問は、次のように言い換えることができます。クラスタマシン間でグローバルにデータストアをバックアップしているか、各マシンに対してローカルなメッセージをバックアップしていますか?

おかげで、

答えて

0

RabbitMQの店カスタムデータベースを使用してメッセージを、場所は通常、次のとおりです。メッセージはに属し 複数のキューにエンキューされているものならば

その後/var/lib/rabbitmq/mnesia/[email protected]/queues/

別のマシン?

クラスタを設定すると、キューはクラスタ全体で表示されますが、所有者は常に1つのノードなので、各操作はキュー所有者にリダイレクトされます。

ノードが停止している場合、キューはdownとマークされ、キューにアクセスできません。

は、クラスタマシン間でグローバルなメッセージストア、または各マシンのローカル です。

デフォルトでは、各ノードにキューデータが格納されます。

あなたはHAポリシー(https://www.rabbitmq.com/ha.html)を有効にした場合、所有者が所有権を変更するキューを降りた場合のメッセージは、他のノードにミラーリングされ、メッセージがにエンキューされたときにメッセージが

+0

だから... ...ご利用いただけます異なるマシンに属する複数のキュー(haではない)は、メッセージがマシンの1つにのみ格納されますか? 私はあなたがイエスだと思います。私は正しい? – syko

+0

いいえ、メッセージが複数のキューにエンキューされている場合、メッセージはキューの所有者に格納されます。 3つのマシンに3つのキューがあるとします。メッセージは3つの異なるマシンに格納されます – Gabriele

+0

私はそれを持っています。メッセージは、所有者マシンでローカルに複製されます。 – syko

関連する問題