About

Pub/Subとは?メッセージキューとの違い

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

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
← Webhookとは?イベントが起きたら相手にHTTPで知らせる仕組み メッセージキューとは?1件を1つのコンシューマーだけが処理する仕組み →