RabbitMQ メッセージ モデル


RabbitMQ は、さまざまなメッセージ モデルに対応する 5 つの異なるデモ サンプルを公式に提供しています。

画像-20230202121015997

1.単純なキュー

1 つの生産者が 1 つの消費者に対応します。!

  • パブリッシャー: メッセージ パブリッシャー、メッセージをキュー キューに送信します
  • queue: メッセージの受け入れとキャッシュを担当するメッセージ キュー
  • consumer: キューにサブスクライブし、キュー内のメッセージを処理します

画像-20230202121318578

2.仕事モード

1 つのプロデューサは複数のコンシューマに対応しますが、1 つのメッセージに対してメッセージを取得できるのは 1 つのコンシューマだけです! ! !
ポーリング分散とは、メッセージ キュー内のメッセージをすべてのコンシューマーに順番に送信することです。メッセージは、1 つのコンシューマーのみが取得できます。

画像-20230202121758958

3. パブリッシュ/サブスクライブ モデル

プロデューサは最初にメッセージを交換に送信し、交換は複数のキューにバインドされます。その後、キューをリッスンしているコンシューマによって受信および消費されます。

  • パブリッシャー: プロデューサー、つまり、メッセージを送信するプログラムですが、キューには送信されず、X (交換) に送信されます。
  • 交換:スイッチ、図中のX。一方では、プロデューサーから送信されたメッセージを受信します。一方、メッセージを特定のキューに配信する、すべてのキューに配信する、メッセージを破棄するなど、メッセージの処理方法を知ること。どのように機能するかは、Exchange の種類によって異なります。Exchange には、次の 3 つのタイプがあります。
    • ファンアウト: ブロードキャストし、交換にバインドされたすべてのキューにメッセージを渡します
    • Direct: 指定されたルーティング キーに一致するキューにメッセージを配信します。
    • トピック: ワイルドカード、ルーティング パターン (ルーティング パターン) に一致するキューにメッセージを送信します
  • コンシューマ: コンシューマは、以前と同様に、キューにサブスクライブします。変更はありません
  • キュー: メッセージ キューは以前と同じで、メッセージを受信して​​メッセージをバッファリングします。

Exchange (exchange) はメッセージの転送のみを担当し、メッセージを保存する機能はありません。そのため、Exchange にバインドされたキューがない場合、またはルーティング ルールを満たすキューがない場合、メッセージは失われます。

画像-20230202121824107

4.ルーティングモード

扇形に広がります

ここに画像の説明を挿入

ブロードキャスト モードでのメッセージ送信プロセスは次のとおりです。

  • 1)複数のキューが存在する可能性があります
  • 2) 各キューは Exchange にバインドする必要があります (exchange)
  • 3) プロデューサーによって送信されたメッセージはスイッチにのみ送信でき、スイッチはどのキューに送信するかを決定し、プロデューサーは決定できません。
  • 4) スイッチはメッセージをすべてのバインドされたキューに送信します。
  • 5) キューにサブスクライブするコンシューマはメッセージを取得できます

直接

画像-20230202122717317

直接モデルの下

  • キューとスイッチ間のバインドは任意ではありませんが、RoutingKey(ルーティング キー)を指定する必要があります
  • メッセージの送信者は、メッセージを Exchange に送信するときにメッセージ ID も指定する必要がありますRoutingKey
  • Exchange はバインドされた各キューにメッセージを配信しなくなりましたが、Routing Keyメッセージに従って判断し、キューがRoutingkeyメッセージとRouting key完全にた場合にのみ、メッセージが受信されます。

プロデューサはメッセージをダイレクト エクスチェンジに送信します.キューとエクスチェンジをバインドするときにルーティング キーがあります.プロデューサによって送信されるメッセージはルーティング キーを指定します.メッセージは同じキーを持つキューにのみ送信されます.次に、キューの消費者がメッセージを消費するのをリッスンします。

これは、消費者がメッセージを選択的に受信できるようにするためです。
ルーティング モードは、ルーティング ルールによってガイドされ、メッセージがルールを満たすキューに格納されるようにガイドします。その後、キューのコンシューマーによって消費されます。

5.テーマモード

画像-20230202122815568

上記のルーティング モードはルーティング キーに基づく完全一致 (完全に等しい場合にのみメッセージが送信される) であり、ここでのワイルドカード モードは一般的にファジー マッチングです。

記号「#」は 1 つ以上の単語に一致することを意味し、記号「*」は 1 つの単語に一致することを意味します。
ただし、ルーティング パターンと同様に、サブジェクト パターンはあいまいなマッチング方法です。

6. 作業モードのまとめ

これらの 5 つの動作モードは、次の 3 つのカテゴリに分類できます。

プロデューサ、メッセージ キュー、1 つのコンシューマ;
プロデューサ、メッセージ キュー、複数のコンシューマ;
プロデューサ、スイッチ、複数のメッセージ キュー、複数のコンシューマ;

7. 4種類のスイッチ

1. Direct ルーティング キーが正確に一致する場合、メッセージは対応するキューに配信されます。

2. ファンアウト メッセージをファンアウト交換に送信すると、そのメッセージは交換に接続されたすべてのキューに置かれます。

3. トピックはあいまい結合方法を設定します. "*" 演算子は "." を区切り文字と見なして 1 文字に一致します. "#" 演算子はブロックの概念を持たず、任意の "." をキーワードと見なします.の一致する部分は、複数の文字に一致する可能性があります。

4. ヘッダー ヘッダー スイッチを使用すると、ルーティング キーの代わりに AMQP メッセージのヘッダーを照合できます。また、ヘッダー スイッチはダイレクト スイッチとまったく同じですが、パフォーマンスが大幅に低下するため、スイッチは基本的に使用されません。

おすすめ

転載: blog.csdn.net/weixin_54040016/article/details/128848532