TERM 026
Pub / Sub
発行側と購読側を分離して、イベントを配る
Publish / Subscribeは、PublisherがTopicへメッセージを発行し、複数のSubscriberがそれぞれ受け取る通信パターンです。送り手は受け手の数や場所を知る必要がありません。
送信側と受信側を分離してメッセージを配る方式の全体像。
CONTENTSこの記事の目次+
QUICK OVERVIEW
30秒でつかむ
発行先の名前
Publisherが受け手を知らずにイベントを送る接点です。
購読ごとの状態
配送位置、再試行、保持期間を用途別に管理します。
配送保証
少なくとも一回などの性質を理解し、受け手を冪等にします。
01 — DEFINITION
Pub / Subとは
何か
Publish / Subscribeは、PublisherがTopicへメッセージを発行し、複数のSubscriberがそれぞれ受け取る通信パターンです。送り手は受け手の数や場所を知る必要がありません。
02 — HOW IT WORKS
仕組みを
3段階で見る
細部へ入る前に、入力から結果までの役割を順番に捉えます。
イベントを発行
発生した事実をTopicへメッセージとして送る。
→購読ごとに配る
サービスが各Subscriptionへ配送対象を分ける。
→独立して処理
各Subscriberが自分の速度と再試行方針で受け取る。
Pub / Subを理解するときの、最小の処理単位です。
03 — ESSENTIALS
押さえるべき
3つの要点
名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。
発行先の名前
Publisherが受け手を知らずにイベントを送る接点です。
購読ごとの状態
配送位置、再試行、保持期間を用途別に管理します。
配送保証
少なくとも一回などの性質を理解し、受け手を冪等にします。
04 — REAL WORLD EXAMPLE
注文確定イベントを複数サービスへ配る
在庫、メール、分析が同じ注文確定を別々に利用します。
- 01
注文サービスがorder.createdを発行する
- 02
3つのSubscriptionへイベントを配る
- 03
各サービスが独立して処理・確認する
05 — WATCH OUT
理解するときの
注意点
便利な仕組みほど、守備範囲と失敗の前提を明確にします。
順序を暗黙に期待しない
必要なら順序キーを使うか、データ側の版で新旧を判断します。
イベント契約を管理する
既存Subscriberを壊さないよう、項目追加と版管理を計画します。
IN ONE SENTENCE
Pub / Subとは?
送信側と受信側を分離してメッセージを配る方式。
