TERM 023
Message Queue
処理の依頼をためて、送り手と受け手を分離する
Message Queueは、送り手が処理依頼をメッセージとしてキューへ置き、受け手が自分の速度で取り出す非同期通信の仕組みです。瞬間的な負荷差や一時障害を吸収します。
処理の依頼を一時的に蓄え、非同期に受け渡す仕組みの全体像。
CONTENTSこの記事の目次+
QUICK OVERVIEW
30秒でつかむ
依頼を作る側
受け手の稼働状況を待たず、キューへ処理を渡します。
処理する側
自分の処理能力に合わせてメッセージを取得します。
完了確認
成功を確認してからメッセージを削除します。
01 — DEFINITION
Message Queueとは
何か
Message Queueは、送り手が処理依頼をメッセージとしてキューへ置き、受け手が自分の速度で取り出す非同期通信の仕組みです。瞬間的な負荷差や一時障害を吸収します。
02 — HOW IT WORKS
仕組みを
3段階で見る
細部へ入る前に、入力から結果までの役割を順番に捉えます。
依頼を預ける
Producerが必要な情報をメッセージにして保存する。
→順番を待つ
Consumerが処理できるまで耐久的に保持する。
→処理して完了を通知
成功時に確認し、失敗時は再配信または隔離する。
Message Queueを理解するときの、最小の処理単位です。
03 — ESSENTIALS
押さえるべき
3つの要点
名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。
依頼を作る側
受け手の稼働状況を待たず、キューへ処理を渡します。
処理する側
自分の処理能力に合わせてメッセージを取得します。
完了確認
成功を確認してからメッセージを削除します。
04 — REAL WORLD EXAMPLE
注文後のメール送信を分離する
注文APIがメール送信まで待つと、外部サービスの遅さが応答へ影響します。
- 01
注文確定と同時にメール依頼をキューへ置く
- 02
APIは受付完了を先に返す
- 03
Workerが依頼を取り出しメールを送る
05 — WATCH OUT
理解するときの
注意点
便利な仕組みほど、守備範囲と失敗の前提を明確にします。
重複処理を前提にする
同じメッセージが再配信されても壊れない冪等な処理にします。
失敗を無限再試行しない
回数上限とデッドレターキューを設け、原因を調査できるようにします。
IN ONE SENTENCE
Message Queueとは?
処理の依頼を一時的に蓄え、非同期に受け渡す仕組み。
