パブリッシュ-サブスクライブパターンは、プロデューサーが送信したメッセージが複数のコンシューマーに受信されることを意味します。メッセージは複数のコンシューマーによって消費および処理されるため、これはブロードキャストパターンまたはワン対多パターンとも呼ばれています。

注意: RabbitMQはファンアウトエクスチェンジタイプを使用してパブリッシュ-サブスクライブパターンを実装しているため、ファンアウトパターンとも呼ばれています。

アーキテクチャ図

ファンアウトパターン

説明:

  • P はプロデューサーを表し、C1 と C2 はコンシューマーを表し、赤がキューを、X がエクスチェンジを表します。
  • エクスチェンジは、エクスチェンジにバインドされたすべてのキューにメッセージを転送する責任があります。
  • 複数のキューを定義し、それぞれを同じエクスチェンジにバインドできます。
  • 各キューには1つ以上のコンシューマーを持たせることができます。

ヒント: 同じキュー内では、メッセージは1つのコンシューマーのみによって処理されます。ファンアウトパターンがメッセージのブロードキャストを実現できる理由は、本質的には複数のメッセージキューを介して行われます。

ユースケース

パブリッシュ-サブスクライブパターンは、よく使用されるワン対多の消費パターンです。たとえば、eコマースの注文が行われた後、注文メッセージが生成されます。倉庫モジュールは注文メッセージを購読して出荷を処理し、通知モジュールは注文メッセージを購読してテキストメッセージを送信し、ポイントモジュールは注文メッセージを処理してポイントを処理します。必要に応じてメッセージを購読することで、ビジネスの拡張が実現され、低結合の設計パターンとなります。