メッセージキュー

プロデューサーとコンシューマーを非同期に接続し、メッセージを一時的に保持する通信基盤

非同期アーキテクチャ

メッセージキューとは

メッセージキュー (Message Queue) は、プロデューサー (送信者) とコンシューマー (受信者) を非同期に接続し、メッセージを一時的に保持する通信基盤である。SQS が AWS の代表的なメッセージキュー。

同期 vs 非同期 (キュー)

同期:
  API → 処理 (5秒) → レスポンス
  → ユーザーが 5 秒待つ

非同期 (キュー):
  API → SQS にメッセージ送信 → レスポンス (即座)
  SQS → Lambda (バックグラウンドで処理)
  → ユーザーは待たない

メッセージキューのメリット

重い処理をバックグラウンドに回す非同期処理が可能になり、トラフィックの急増をバッファリングで吸収できる。プロデューサーとコンシューマーが独立するため疎結合になり、失敗したメッセージの自動リトライも実現できる。コンシューマーを増やすだけで並列処理をスケールできる。

SQS vs SNS vs EventBridge

サービス パターン 用途
SQS キュー (1 対 1) バックグラウンド処理
SNS Pub/Sub (1 対多) ファンアウト通知
EventBridge イベントバス (1 対多) イベント駆動、フィルタリング

SQS Standard vs FIFO

観点 Standard FIFO
順序 ベストエフォート 厳密な順序保証
重複 At-least-once Exactly-once
スループット ほぼ無制限 300 msg/秒 (バッチで 3,000)
用途 一般的な非同期処理 順序が重要な処理

デッドレターキュー (DLQ)

メッセージ処理失敗 (1 回目) → リトライ
メッセージ処理失敗 (2 回目) → リトライ
メッセージ処理失敗 (3 回目) → DLQ に移動
→ DLQ のメッセージを調査・再処理

詳しくは関連書籍を参照。

関連用語