📡
Publish-Subscribe
メッセージブローカーを介した非同期通信
Pub/Subパターンでは、パブリッシャーとサブスクライバーは互いを直接知りません。メッセージブローカー(中間レイヤー)がメッセージを管理し、トピックベースでメッセージを配信します。
構造ダイアグラム
📝
Publisher
メッセージ発行者
① 発行
→
📡
Message Broker
トピック管理 + メッセージ配信
Topic A
Topic B
② 配信
→
📥
Subscriber A
📥
Subscriber B
📥
Subscriber C
フロー説明
- サブスクライバーが関心トピックをブローカーに登録(購読)
- パブリッシャーがメッセージを特定トピックに発行
- ブローカーが該当トピックのすべてのサブスクライバーにメッセージ配信
- 各サブスクライバーが独立的にメッセージ処理
動作フロー
1
サブスクライバーがメッセージブローカーの特定トピックを購読
2
パブリッシャーがメッセージを特定トピックに発行
3
メッセージブローカーが該当トピックの全サブスクライバーにメッセージを配信
4
各サブスクライバーが独立してメッセージを処理
メリット
- ✓ パブリッシャー-サブスクライバー間の疎結合
- ✓ スケーラビリティに優れる
- ✓ 非同期処理が可能
- ✓ 多数のサブスクライバーに同時配信
デメリット
- ✗ メッセージブローカーへの依存
- ✗ メッセージ順序保証が複雑
- ✗ デバッグが困難
- ✗ メッセージ喪失の可能性
ユースケース
Redis Pub/Sub
Apache Kafka
AWS SNS/SQS
Google Cloud Pub/Sub
RabbitMQ