私はrabbitMQを使ってAMQPを学びました。私はファンアウト交換と呼ばれるこのコンセプトに遭遇しました。イラストの図からわかるように、ロードバランサのようなものです。誰もそれが実際の目的であることを説明してもらえますか? ファンアウト交換は基本的にロードバランサですか?
答えて
ファンアウト交換に到着すると、ただ1つのキューがメッセージを受け取ることを意味すると仮定します。その観点から:
いいえ、私はそのロードバランサとは思いません(私は用語が混乱する可能性があることを認めます)。
ウサギのMQにはさまざまなタイプの交換がありますが、実際のファンアウト交換は1つのタイプにすぎません。 ウサギmqの基本モデルは、同じ交換に必要な数のキューを接続できると仮定しています。 交換機に接続されているすべてのキューにメッセージが届きます(rabbit mqはメッセージを複製するだけです)。交換はロードバランサとして機能しません。
交換タイプ間の唯一の違いは、一致するルーティングキー。これは、通常の封筒の "to"フィールドのようなものです。メッセージが交換に到着すると、それはルーティングキー(a.k.a.バインディング)をチェックし、交換のタイプに応じて、メッセージをどのキューにルーティングすべきかを「発見」する。 キューが交換登録されると、常にこのバインディングが使用されます。それはキューのようにバインディング "ねえ、ジョンスミス(そのルーティングキー)に到着するはずのすべてのメッセージは、私にそれらを渡してください"と言う。 メッセージが到着すると、エンベロープには常に「To」フィールドがあります。そのため、交換はメッセージがJohn Smithに送信されるかどうかをチェックし、そうであればキューにルーティングします。
ジョンスミスからメッセージを受け取ることに関心のあるキューがたくさんある可能性があります。この場合、メッセージは複製されます。
ファンアウト交換については、ルーティングキーに注意を払わずに、接続されたすべてのキューにメッセージを送信するだけです。
ここで、消費者と呼ばれる別の抽象があります。消費者は単一のキューに接続できます(再び、多くのコンシューマをキューに接続できます)。 このトリックは、一度に1人の消費者しかメッセージを処理できないということです。 ロードバランサが必要な場合は、Exchangeに接続された1つのキュー(もちろんファンアウトすることができます)を使用できますが、多くのコンシューマをそのキューに接続すると、ウサギは最初のコンシューマラウンドロビンを内部的に使用して最初のコンシューマを選ぶ) - コンシューマがそれを処理できない場合、メッセージは再びキューに入れられ、ウサギは別のコンシューマにメッセージを送信しようとします。
希望すると便利です。
- 1. 基本的なロードバランサの機能
- 2. Javaファイル間の基本的な交換変数
- 3. 基本的なSNMP交換のためのASN.1定義
- 4. RabbitMQ:ファンアウト交換で未承認のメッセージを再消費する
- 5. ファンアウト交換シナリオでのRabbitMQキューディスクスペースの使用
- 6. AMQPとファンアウトとダイレクト交換を混ぜる
- 7. RestTemplateと基本認証および交換メソッドとの衝突
- 8. Informaticaの基本的なテキスト置換
- 9. 基本的にはWindowsの
- 10. は基本的に[PYTHON]
- 11. 基本的にC
- 12. 基本的
- 13. cでの基本変換
- 14. 基本的なデータフレームで簡単な基本棒グラフを作成するには?
- 15. は(.SHOWに基本的にはJQuery
- 16. 基本的なSQLは
- 17. Angular2は基本的価値
- 18. 基本的なSQLは
- 19. 基本的な要素は
- 20. ToggleClass - 非常に基本的です
- 21. コール:: DrawTextLayout()基本的に
- 22. ブーストバリアントは基本的にc/C++のユニオンですか?
- 23. scanf、printf、boost :: lexical_castは基本的に危険ですか?
- 24. 基本的なシェルプログラミング
- 25. 基本的なクロスブラウザースタイルシートテンプレート
- 26. 基本的なスレッド
- 27. 基本的なJavaScript:()();
- 28. 基本的なコマンドライン?
- 29. 基本的なピボットテーブル
- 30. 基本的なマルチソケットプログラム