メッセージキュー

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

非同期アーキテクチャ

メッセージキューとは

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

同期 vs 非同期 (キュー)

同期と 非同期 (キュー) の違いを図で示す。

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

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

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

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

SQS vs SNS vs EventBridge

SQS と SNS vs EventBridge の違いを以下にまとめる。

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

SQS Standard vs FIFO

SQS Standard と FIFO の違いを以下にまとめる。

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

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

デッドレターキュー (DLQ) を図で示す。

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

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

この記事は役に立ちましたか?

関連用語

関連する記事