SQS 標準キューの仕様により発生する重複の頻度について

0

AWSの公式ドキュメントによれば、SQS 標準キューがAt-Least-Once モデルであることに起因して下記の状況が発生しうると記載されています。

  1. 「まれ」ではあるが、メッセージ削除後であってもメッセージが複数回配信されることがある
      情報元→https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/standard-queues-at-least-once-delivery.html

  2. 可視性タイムアウトの期間中であっても、メッセージが複数回配信されないという絶対的な保証はない
      情報元→https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html

下記について教えて欲しい。

  • 「まれ」、「絶対的な保証はない」とありますが、どの程度の頻度と考えれば良いか。
  • 発生しやすい/しにくい条件(例えば、AWS構成や規模、キュー設定など)があれば教えて欲しい

【想定しているユースケース】
前提:
S3 にオブジェクトがPostされたときに、SQS キューにイベントを通知するように設定されている

ユースケース:
(1)クライアントプログラムでは、SQS をポーリングし、ReceiveMessage() でメッセージを取得する
(2)メッセージ内の S3 キーで識別されるオブジェクトを、クライアント環境にダウンロードする
(3)ダウンロードが完了したら(1)で取得したメッセージを削除する
※上記(1)~(3)を繰り返すが、一つのオブジェクトのダウンロードは一回のみにしたい

質問済み 2ヶ月前81ビュー
1回答
0

過去にS3→SQS→Lambdaという構成で5分おきくらいに動く構成を採用したことがありますが、その際は多重実行みたいなのは見たことは無かったです。
私の経験では発生していることを確認できていないですが、ドキュメントに記載されている通り、同じメッセージを処理したとしても影響が出ないように冪等性を持たせることをお勧めします。

profile picture
エキスパート
回答済み 2ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ