記事ディレクトリ
RabbitMQ は、さまざまなメッセージ モデルに対応する 5 つの異なるデモ サンプルを公式に提供しています。
1.単純なキュー
1 つの生産者が 1 つの消費者に対応します。!
- パブリッシャー: メッセージ パブリッシャー、メッセージをキュー キューに送信します
- queue: メッセージの受け入れとキャッシュを担当するメッセージ キュー
- consumer: キューにサブスクライブし、キュー内のメッセージを処理します
2.仕事モード
1 つのプロデューサは複数のコンシューマに対応しますが、1 つのメッセージに対してメッセージを取得できるのは 1 つのコンシューマだけです! ! !
ポーリング分散とは、メッセージ キュー内のメッセージをすべてのコンシューマーに順番に送信することです。メッセージは、1 つのコンシューマーのみが取得できます。
3. パブリッシュ/サブスクライブ モデル
プロデューサは最初にメッセージを交換に送信し、交換は複数のキューにバインドされます。その後、キューをリッスンしているコンシューマによって受信および消費されます。
- パブリッシャー: プロデューサー、つまり、メッセージを送信するプログラムですが、キューには送信されず、X (交換) に送信されます。
- 交換:スイッチ、図中のX。一方では、プロデューサーから送信されたメッセージを受信します。一方、メッセージを特定のキューに配信する、すべてのキューに配信する、メッセージを破棄するなど、メッセージの処理方法を知ること。どのように機能するかは、Exchange の種類によって異なります。Exchange には、次の 3 つのタイプがあります。
- ファンアウト: ブロードキャストし、交換にバインドされたすべてのキューにメッセージを渡します
- Direct: 指定されたルーティング キーに一致するキューにメッセージを配信します。
- トピック: ワイルドカード、ルーティング パターン (ルーティング パターン) に一致するキューにメッセージを送信します
- コンシューマ: コンシューマは、以前と同様に、キューにサブスクライブします。変更はありません
- キュー: メッセージ キューは以前と同じで、メッセージを受信してメッセージをバッファリングします。
Exchange (exchange) はメッセージの転送のみを担当し、メッセージを保存する機能はありません。そのため、Exchange にバインドされたキューがない場合、またはルーティング ルールを満たすキューがない場合、メッセージは失われます。
4.ルーティングモード
扇形に広がります
ブロードキャスト モードでのメッセージ送信プロセスは次のとおりです。
- 1)複数のキューが存在する可能性があります
- 2) 各キューは Exchange にバインドする必要があります (exchange)
- 3) プロデューサーによって送信されたメッセージはスイッチにのみ送信でき、スイッチはどのキューに送信するかを決定し、プロデューサーは決定できません。
- 4) スイッチはメッセージをすべてのバインドされたキューに送信します。
- 5) キューにサブスクライブするコンシューマはメッセージを取得できます
直接
直接モデルの下:
- キューとスイッチ間のバインドは任意ではありませんが、
RoutingKey
(ルーティング キー)を指定する必要があります - メッセージの送信者は、メッセージを Exchange に送信するときにメッセージ ID も指定する必要があります
RoutingKey
。 - Exchange はバインドされた各キューにメッセージを配信しなくなりましたが、
Routing Key
メッセージに従って判断し、キューがRoutingkey
メッセージとRouting key
完全にた場合にのみ、メッセージが受信されます。
プロデューサはメッセージをダイレクト エクスチェンジに送信します.キューとエクスチェンジをバインドするときにルーティング キーがあります.プロデューサによって送信されるメッセージはルーティング キーを指定します.メッセージは同じキーを持つキューにのみ送信されます.次に、キューの消費者がメッセージを消費するのをリッスンします。
これは、消費者がメッセージを選択的に受信できるようにするためです。
ルーティング モードは、ルーティング ルールによってガイドされ、メッセージがルールを満たすキューに格納されるようにガイドします。その後、キューのコンシューマーによって消費されます。
5.テーマモード
上記のルーティング モードはルーティング キーに基づく完全一致 (完全に等しい場合にのみメッセージが送信される) であり、ここでのワイルドカード モードは一般的にファジー マッチングです。
記号「#」は 1 つ以上の単語に一致することを意味し、記号「*」は 1 つの単語に一致することを意味します。
ただし、ルーティング パターンと同様に、サブジェクト パターンはあいまいなマッチング方法です。
6. 作業モードのまとめ
これらの 5 つの動作モードは、次の 3 つのカテゴリに分類できます。
プロデューサ、メッセージ キュー、1 つのコンシューマ;
プロデューサ、メッセージ キュー、複数のコンシューマ;
プロデューサ、スイッチ、複数のメッセージ キュー、複数のコンシューマ;
7. 4種類のスイッチ
1. Direct ルーティング キーが正確に一致する場合、メッセージは対応するキューに配信されます。
2. ファンアウト メッセージをファンアウト交換に送信すると、そのメッセージは交換に接続されたすべてのキューに置かれます。
3. トピックはあいまい結合方法を設定します. "*" 演算子は "." を区切り文字と見なして 1 文字に一致します. "#" 演算子はブロックの概念を持たず、任意の "." をキーワードと見なします.の一致する部分は、複数の文字に一致する可能性があります。
4. ヘッダー ヘッダー スイッチを使用すると、ルーティング キーの代わりに AMQP メッセージのヘッダーを照合できます。また、ヘッダー スイッチはダイレクト スイッチとまったく同じですが、パフォーマンスが大幅に低下するため、スイッチは基本的に使用されません。