パブリッシュ-サブスクライブパターンは、プロデューサーが送信したメッセージが複数のコンシューマーに受信されることを意味します。メッセージは複数のコンシューマーによって消費および処理されるため、これはブロードキャストパターンまたはワン対多パターンとも呼ばれています。
注意: RabbitMQはファンアウトエクスチェンジタイプを使用してパブリッシュ-サブスクライブパターンを実装しているため、ファンアウトパターンとも呼ばれています。
アーキテクチャ図
説明:
- P はプロデューサーを表し、C1 と C2 はコンシューマーを表し、赤がキューを、X がエクスチェンジを表します。
- エクスチェンジは、エクスチェンジにバインドされたすべてのキューにメッセージを転送する責任があります。
- 複数のキューを定義し、それぞれを同じエクスチェンジにバインドできます。
- 各キューには1つ以上のコンシューマーを持たせることができます。
ヒント: 同じキュー内では、メッセージは1つのコンシューマーのみによって処理されます。ファンアウトパターンがメッセージのブロードキャストを実現できる理由は、本質的には複数のメッセージキューを介して行われます。
ユースケース
パブリッシュ-サブスクライブパターンは、よく使用されるワン対多の消費パターンです。たとえば、eコマースの注文が行われた後、注文メッセージが生成されます。倉庫モジュールは注文メッセージを購読して出荷を処理し、通知モジュールは注文メッセージを購読してテキストメッセージを送信し、ポイントモジュールは注文メッセージを処理してポイントを処理します。必要に応じてメッセージを購読することで、ビジネスの拡張が実現され、低結合の設計パターンとなります。