【めっせーじきゅー】

メッセージキュー とは?

💡 システム間の「伝言板」で非同期に連携
📌 このページのポイント
メッセージキュー ― 非同期通信の仕組み プロデューサー (送信側) メッセージキュー msg3 msg2 msg1 ← 入 出 → FIFO(先入先出) コンシュ ーマー (受信側) メッセージキューのメリット 非同期処理 送信側は受信を 待たなくてよい 負荷分散 複数コンシューマーで 処理を分散 疎結合 送受信が独立して スケール可能
メッセージキューのイメージ
ひよこ ひよこ

直接APIを呼べばいいのでは?

ペンギン先生 ペンギン先生

同期的なAPI呼び出しだと、受信側がダウンしていたらエラーになる。受信側が遅いと送信側も待たされる。メッセージキューなら送信側はキューに入れるだけで完了、受信側は自分のペースで処理できる。バーガーショップで注文(メッセージ)を伝票(キュー)に貼って、厨房が順番に作るイメージだよ

ひよこ ひよこ

どんな場面で使う?

ペンギン先生 ペンギン先生

①注文処理(注文受付は即レスポンス、在庫確認・決済・通知キュー経由で非同期処理)、②メール送信(大量送信をキューに入れて順次送信)、③画像変換(アップロードを受け付けてキューに入れ、ワーカーが変換)、④マイクロサービス間の連携。ピーク時の負荷を平準化するバッファの役割が大きいよ

ひよこ ひよこ

Amazon SQSはどう?

ペンギン先生 ペンギン先生

AWSのフルマネージドメッセージキュー。Standard Queue(高スループット、順序保証なし)とFIFO Queue(順序保証あり、秒300メッセージ)がある。自分でサーバーを管理する必要がなく、自動スケール。Lambda関数のトリガーにもできるから、サーバーレスアーキテクチャと相性抜群だよ

ひよこ ひよこ

メッセージが失敗したらどうなる?

ペンギン先生 ペンギン先生

処理に失敗したメッセージは一定回数リトライされ、それでもダメならデッドレターキュー(DLQ)に移動する。DLQに溜まったメッセージは後から手動で確認・再処理できる。メッセージの処理は「冪等」(何回実行しても同じ結果)に設計するのが鉄則。ネットワーク障害で同じメッセージが2回届くこともあるからね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「メッセージキュー」って出てきたら「システム間で非同期にメッセージをやり取りする仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Message Queue」 = メッセージの待ち行列
💬 Queue(待ち行列)にMessage(伝言)を入れて順番に処理する。郵便ポストのイメージだよ
← 用語集にもどる