2016-12-22 11 views

答えて

2

ファンアウト交換に到着すると、ただ1つのキューがメッセージを受け取ることを意味すると仮定します。その観点から:

いいえ、私はそのロードバランサとは思いません(私は用語が混乱する可能性があることを認めます)。

ウサギのMQにはさまざまなタイプの交換がありますが、実際のファンアウト交換は1つのタイプにすぎません。 ウサギmqの基本モデルは、同じ交換に必要な数のキューを接続できると仮定しています。 交換機に接続されているすべてのキューにメッセージが届きます(rabbit mqはメッセージを複製するだけです)。交換はロードバランサとして機能しません。

交換タイプ間の唯一の違いは、一致するルーティングキー。これは、通常の封筒の "to"フィールドのようなものです。メッセージが交換に到着すると、それはルーティングキー(a.k.a.バインディング)をチェックし、交換のタイプに応じて、メッセージをどのキューにルーティングすべきかを「発見」する。 キューが交換登録されると、常にこのバインディングが使用されます。それはキューのようにバインディング "ねえ、ジョンスミス(そのルーティングキー)に到着するはずのすべてのメッセージは、私にそれらを渡してください"と言う。 メッセージが到着すると、エンベロープには常に「To」フィールドがあります。そのため、交換はメッセージがJohn Smithに送信されるかどうかをチェックし、そうであればキューにルーティングします。

ジョンスミスからメッセージを受け取ることに関心のあるキューがたくさんある可能性があります。この場合、メッセージは複製されます。

ファンアウト交換については、ルーティングキーに注意を払わずに、接続されたすべてのキューにメッセージを送信するだけです。

ここで、消費者と呼ばれる別の抽象があります。消費者は単一のキューに接続できます(再び、多くのコンシューマをキューに接続できます)。 このトリックは、一度に1人の消費者しかメッセージを処理できないということです。 ロードバランサが必要な場合は、Exchangeに接続された1つのキュー(もちろんファンアウトすることができます)を使用できますが、多くのコンシューマをそのキューに接続すると、ウサギは最初のコンシューマラウンドロビンを内部的に使用して最初のコンシューマを選ぶ) - コンシューマがそれを処理できない場合、メッセージは再びキューに入れられ、ウサギは別のコンシューマにメッセージを送信しようとします。

希望すると便利です。

関連する問題