【ぱぶさぶ】
Pub/Sub とは?
最終更新:
💡 「掲示板に貼る人」と「読む人」の分離
メッセージの発行と購読を分離するパターン。発行者がトピックなどへ送ったメッセージを、関心を登録した購読側へ届ける。非同期のサービス間連携でよく使われる。
📌 このページのポイント
- Publish(発行)とSubscribe(購読)を分離して送信側と受信側の結び付きを弱める
- トピックなどに購読を登録し、同じイベントを複数の処理へ配信できる
- 別々の購読への配信と、同じ購読内のワーカーによる分担は区別する
- 順序・再配信・保持期間などの条件は製品や設定によって異なる
発行と購読を分けると何がうれしいの?
注文サービスが注文イベントを発行し、在庫と通知の処理がそれぞれ購読する、という連携ができるよ。発行側が各処理を直接呼び出さずに済むので、受け取る処理を追加しやすくなるんだ。
トピックとブローカーは同じ?
トピックはメッセージを分類する宛先や名前。ブローカーやメッセージングサービスは、メッセージを受け取り配信する仕組みだよ。Google Cloud Pub/Subでは、トピックにsubscription(購読)を作り、その購読を通してsubscriberが受け取るんだ。
キューとPub/Subは別物なの?
配り方に注目しよう。Google Cloud Pub/Subでは別々の購読へ同じメッセージを配れる一方、同じ購読の複数ワーカーで処理を分担することもできる。製品名だけで1対1か1対多か決まるわけではないよ。
配信の順序や回数は保証される?
製品と設定を確認する必要があるよ。たとえばKafkaはパーティション内の順序を保ち、SNSにもFIFOトピックがある。再配信で重複する構成では、同じ注文を二重に処理しない工夫が必要。失敗時の再試行や退避先も設計しよう。
イベントを配れば処理は全部そろう?
各購読の処理は別々に進むので、同じ瞬間に完了するとは限らないよ。在庫処理だけが遅れたり失敗したりする場合もある。Pub/Subで通知することと、複数サービスの更新をまとめて確定することは別に考えよう。
まとめ:ざっくりこれだけ覚えればOK!
「Pub/Sub」って出てきたら「メッセージの発行と購読を分けて連携する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Publish/Subscribe」 = 発行/購読
💬 Publish(出版する)とSubscribe(購読する)。雑誌の出版と定期購読の関係に似ているよ