【めっせーじきゅー】

メッセージキュー とは?

💡 システム間の「伝言板」で非同期に連携する
📌 このページのポイント
メッセージキュー(Message Queue) Producer メッセージを送信 Queue(FIFO) M3 M2 M1 M0 Consumer メッセージを処理 メッセージキューのメリット 非同期処理: 送信側は応答を待たずに次の処理へ 負荷分散: 複数のConsumerで並列に処理可能 信頼性: Consumer停止中もキューがメッセージを保持
メッセージキューのイメージ(Producer → Queue → Consumer)
ひよこ ひよこ

なんで直接通信しないの?

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

直接通信(同期通信)だと、受信側がダウンしていたらエラーになるし、受信側が遅いと送信側も待たされる。メッセージキューを挟めば、送信側はキューにメッセージを入れるだけで完了。受信側がダウンしていてもメッセージはキューに残って、復旧後に処理されるんだよ

ひよこ ひよこ

SQSとKafkaの違いは?

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

SQSは「メッセージを1回だけ処理する」キュー。受信したメッセージは削除される。Kafkaは「メッセージを保持してストリームとして再生できる」イベントログ。SQSはタスクの非同期処理向き、Kafkaはイベントストリーミングやリアルタイムデータパイプライン向きだね

ひよこ ひよこ

具体的な使用例は?

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

ECサイトで「注文確定」→メッセージキューに投入→①在庫引当サービスが消費、②メール通知サービスが消費、③ポイント付与サービスが消費。各サービスが独立して処理するから、メール通知が遅くても注文処理には影響しない。これが疎結合の力だよ

ひよこ ひよこ

注意すべき点は?

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

①メッセージの重複処理対策(冪等性の確保)、②メッセージの順序保証(必要な場合はFIFOキューを使う)、③Dead Letter Queue(処理できないメッセージの退避先)の設定、④キュー監視(メッセージが溜まりすぎていないか)。特に冪等性は設計段階から考慮すべきポイントだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
メッセージキュー」って出てきたら「システム間でメッセージを非同期にやり取りする仲介サービス」と思えればだいたいOK!
📖 おまけ:英語の意味
「Message Queue」 = メッセージ待ち行列
💬 Queue(待ち行列)にメッセージを入れて、受信側が都合の良いタイミングで取り出す仕組みだよ
← 用語集にもどる