Amazon SQS の標準キューで重複排除に利用できるキーを教えてください

Amazon SQS の標準キューで重複排除に利用できるキーを教えてください

2026.01.15

困っていた内容

Amazon SQS の標準キューは At-least once のため、受信アプリケーション側で重複排除を行う予定です。
メッセージ ID は重複排除処理に利用できますか。利用できるユニークなキーを教えてください。

どう対応すればいいの?

プロデューサー側でユニークなキーを発行し、メッセージに含めてください。

メッセージの重複は次の 2 つのパターンが想定されます。

  • At-least once に起因するもの
  • プロデューサーに起因するもの

At-least once の仕様により同一のメッセージが複数回配信された場合、メッセージ ID は同一となります。
一方で、プロデューサー側のリトライなどで、同一のメッセージが異なるメッセージ ID で複数回登録される可能性があります。

Amazon SQS と処理の重複 前編 ~ 可視性タイムアウトの役割 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS

3-3. プロデューサーのメッセージ送信時に起きうる重複

そのため、重複排除処理を行う際のキーは、プロデューサー側で発行したユニークなキーをメッセージに含め、そのキーを用いてコンシューマー側でべき等な実装を行う際に利用してください

参考資料

3-2. スタンダードキューの仕様により起きうる重複

…(中略)…

3-3. プロデューサーのメッセージ送信時に起きうる重複

Dynamo DB等を活用して処理済みであることを
判定できる仕組みを導入し重複実行しない設計

例:アプリで発行したID等を記録し重複処理を排除

At-least once 配信 — 少なくとも 1 回の配信が保証されます。つまり、すべてのメッセージは少なくとも 1 回配信されますが、再試行やネットワーク遅延が原因で 2 回以上配信される場合もあります。同じメッセージを複数回処理してもシステムの状態に影響が及ばないように、べき等性オペレーションを使用して重複メッセージに対応できるようにアプリケーションを設計する必要があります。

各メッセージは、システム割り当てのメッセージ ID を受け取ります。この ID は、Amazon SQS から SendMessage レスポンスで返されます。この識別子は、メッセージを特定する場合に役立ちます。メッセージ IDの最大長は100文字です。

まず、メッセージ ID を確認して、同じメッセージが複数回受信されていることを確認します。前述のいずれかの理由で同じメッセージのコピーを複数回受信する場合、メッセージの ID は同じです。この場合は、以下の手順に従ってください。同じ内容でメッセージ ID が異なる複数のメッセージを受信する場合、メッセージはキューに複数回送信されています。この場合は、メッセージプロデューサーを確認してください。

この記事をシェアする

FacebookHatena blogX

関連記事