Polling publisherパターン
メッセージ発行の信頼性を担保するためのパターン
Outboxパターンと組み合わせて使う
仕組み
(① Outbox テーブルに書き込む)
ビジネスデータの更新と「送りたいメッセージ」を、同じDBトランザクション内で書き込む
② Polling Publisher が outbox を定期的に読む
ここがこのパターンの本体mrsekut.icon
別プロセス(or 定期ジョブ)が、下記をループで回し続ける
1. outbox テーブルを定期的に SELECT(未送信のものを取得)
2. メッセージブローカーへ publish
3. 送信済みフラグを立てる / 行を削除
code:mermaid
flowchart LR
Service -->|同一Tx| Outbox(Outbox<br/>テーブル)
PublisherPolling<br/>Publisher -->|poll| Outbox
Publisher -->|publish| Broker