📡

Publish-Subscribe

メッセージブローカーを介した非同期通信

Pub/Subパターンでは、パブリッシャーとサブスクライバーは互いを直接知りません。メッセージブローカー(中間レイヤー)がメッセージを管理し、トピックベースでメッセージを配信します。

構造ダイアグラム

📝
Publisher
メッセージ発行者
① 発行
📡
Message Broker
トピック管理 + メッセージ配信
Topic A Topic B
② 配信
📥
Subscriber A
📥
Subscriber B
📥
Subscriber C
フロー説明
  1. サブスクライバーが関心トピックをブローカーに登録(購読)
  2. パブリッシャーがメッセージを特定トピックに発行
  3. ブローカーが該当トピックのすべてのサブスクライバーにメッセージ配信
  4. 各サブスクライバーが独立的にメッセージ処理

動作フロー

1

サブスクライバーがメッセージブローカーの特定トピックを購読

2

パブリッシャーがメッセージを特定トピックに発行

3

メッセージブローカーが該当トピックの全サブスクライバーにメッセージを配信

4

各サブスクライバーが独立してメッセージを処理

メリット

  • パブリッシャー-サブスクライバー間の疎結合
  • スケーラビリティに優れる
  • 非同期処理が可能
  • 多数のサブスクライバーに同時配信

デメリット

  • メッセージブローカーへの依存
  • メッセージ順序保証が複雑
  • デバッグが困難
  • メッセージ喪失の可能性

ユースケース

Redis Pub/Sub Apache Kafka AWS SNS/SQS Google Cloud Pub/Sub RabbitMQ