RabbitMQのトピックモードは、ルーティングモードに似ていますが、その違いはトピックモードのルーティングマッチングがワイルドカードの曖昧なマッチングをサポートしている点です。一方、ルーティングモードは完全一致のみをサポートしています。

アーキテクチャ図

Topic mode

説明:

  1. Pはプロデューサを、Xはエクスチェンジを表し、赤いQ1、Q2はキューを、C1、C2はコンシューマを表します。
  2. エクスチェンジのタイプはトピックです。
  3. トピックエクスチェンジのメッセージ転送ロジック:メッセージ内のルーティングキーを、エクスチェンジのすべてのバインディングに関連付けられたルーティングキーとのワイルドカードの曖昧なマッチングを行い、一致する場合はメッセージをバインドされたキューに送信します。

ヒント:トピックモードとダイレクトモードの違いは、ルーティングキーの一致がワイルドカードの曖昧なマッチングをサポートしているかどうかです。それ以外は同じです。

トピックがサポートするワイルドカードは次のとおりです:

  • #(ハッシュ)は1つ以上の単語に一致します
  • *(アスタリスク)は1つの単語にのみ一致します

例: キューQ1にバインドされたルーティングキー = *.orange.* キューQ2にバインドされたルーティングキー = *.*.rabbit および lazy.#

メッセージのルーティングキーが "quick.orange.rabbit" の場合、Q1とQ2の両方に一致します。

ヒント:ルーティングキーがどのキューにも一致しない場合、メッセージは破棄されます。ルーティングキーが空の場合、ファンアウトモードと同じ機能を持ち、メッセージはすべてのキューに直接転送されます。

ユースケース

ルーティングモードと同様に、柔軟な購読条件の柔軟性に違いがあり、特にルーティングキーのより柔軟な一致ルールが異なります。