この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 8397|答える: 0

RabbitMQの3つの交換モード(ファンアウト、ダイレクト、トピック)の紹介

[リンクをコピー]
掲載地 2018/03/29 14:30:45 | | | |
紹介:
RabbitMQでは、プロデューサーが提出したすべてのメッセージはExchangeで受理され、特定のポリシーに従ってQueueに転送され保存されます
RabbitMQはファンアウト、ダイレクト、トピック、ヘッダーの4種類の交換を提供します
ヘッダーモードは実際にはあまり使われず、本記事では最初の3つのモードのみを比較します。

1. 直接交換


ダイレクトエクスチェンジに送信されたメッセージは、ルートキーで指定されたキューに転送されます。

1. 一般的に、rabbitMQ:"に付属する交換所を使用できます(交換所の名前は空文字列で、以下、デフォルト交換所と呼びます)。

2. このモードでは、エクスチェンジに対してバインディング操作を行う必要はありません

3. メッセージングには「RouteKey」が必要で、これは単に送信先のキュー名と理解できます。

4. RouteKeyで指定されたキュー名がvhostに存在しない場合、メッセージは破棄されます。

2. ファンアウト交換


ファンアウトエクスチェンジに送信されたメッセージは、そのエクスチェンジに紐づくすべてのキューに転送されます。

1. ルーティングテーブルのパターンとして理解できます

2. このモードはルートキーを必要としません

3. このモードは、Exchangeを事前にキューにバインドする必要があります。1つのExchangeは複数のキューをバインドでき、1つのQueueは複数のExchangeにバインド可能です。

4. メッセージを受け取ったエクスチェンジがいかなるキューにもバインドされていなければ、そのメッセージは破棄されます。

3. トピック交換


トピック交換に送信されたメッセージは、RouteKeyで指定されたトピックを扱うすべてのキューに転送されます

1. このパターンはより複雑で、各キューには独自の関心トピックがあり、すべてのメッセージには「タイトル」(RouteKey)があり、ExchangeはそのトピックのRouteKeyにほぼ一致できるすべてのキューにメッセージを転送します。

2. このモードはRouteKeyを必要とし、ExchangeとQueueを事前にバインドしている場合があります。

3. バインド時に、キューが関心を持つトピック(例えば「#.log.#」)を提供し、ログに関連するすべてのメッセージをキューが処理していることを示します(RouteKeyが「MQ.log.error」のメッセージはキューに転送されます)。

4. 「#」は0または複数のキーワードを意味し、「」は1つのキーワードを意味します。 例えば、「log」です。 「log.warn」には対応できますが、「log.warn.timeout」には対応できません。 しかし「log.#」は上記のものと一致します。

5. 同様に、ExchangeがRouteKeyに一致するキューを見つけられなければ、このメッセージを解除します。




先の:XPosedを使ってAndroid SSL証明書の強力な検証を回避してください
次に:.net/c# RabbitMQ接続切断 - 切断と再接続
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com