Amazon SQS

SQS

アプリケーションのつなぎ方

  • ストリーミング/メッセージングの検討
  • 同期・非同期方式
  • Push/pull方式
  • P2P / pub/sub 方式 => SQSは非同期方式・Pull方式・P2P方式に対応

特徴

ほぼ無制限のスケーラびりティを備えたフルマネージドな分散メッセージキュー

つなぐコンポーネントに求められること

  • 機密性
  • 可用性
  • 低価格

ユースケース

  • バッファリングとバッチ化 : 一時的なリクエストの均一化
  • ワークキュー: プロデューサーとコンシューマー処理の依存処理を低減
  • リクエストのオフロード: 重い処理の切り出しによる応答性能の改善
  • ターゲットのファンアウト: Amazon SNSとの組み合わせによる処理の並列化

SQS キューの特徴

  • スタンダードキュー: 最低1回の配信/順序はベストエフォート
  • FIFOキュー: キューの順序を保証、一度のみ配信

キューの取得方法

  • ショートポーリング: 複数キューを一つのスレッドでポーリングする場合に利用、即応答
  • ロングポーリング(多くのケースはこっち):20秒でタイムアウト

メッセージ取得のお作法

  1. ポーリング
  2. 取得&処理
  3. 削除

機能詳細

  • 可視性タイムアウト: 他のコンシューマが取得したら、一定期間そのキューを他のコンシューマからは取得できなくする
  • 遅延キュー/メッセージタイマー: プロデューサがキューに入れてからコンシューマがリクエストを送れるまでの遅延時間
  • Dead Letter Queue: 正しく処理できないキューを分離しておける
  • サーバーサイド暗号化: キューに入っているメッセージをKMSで暗号化
  • キューへのアクセス制御: Amazon SQSポリシーでキュー自体にアクセス制御、IAMと併用可
  • メッセージ属性: メッセージ本文とは別にメタ情報を持てる。最大10個
  • モニタリング:CloudWatch でキューを監視可能

kinesis との使い分け

ストリーミングであればKinesisを利用する。他はユースケース次第