業務自動化・iPaaS・RPA

Amazon SQSとは|取り出し口を1台から2台にしただけで、37.1%の順が入れ替わった

順番はどこまで守られるのか同じものが二重に届くのか崩れた順をどう扱うのか

取り出し口を1台から2台にしただけで、37.1%の順が入れ替わりました。1台なら0.0%です。

ただし、ずれ幅は4件ぶんにとどまります。割合とずれ幅は別々に動きます。

この記事の要点

  • 1台なら0.0%
  • 2台で37.1%が入れ替わる
  • 32台では97.6%
  • ずれ幅は39件ぶんまで

取り出し口を2台にした時点で37.1%が入れ替わる

順を保とうとはします。ただし取り出し口を増やせば、その努力とは別に崩れます。

Amazon SQSの標準の並びは、順を保とうとします。公式はそれでも標準の並びは、送られた順を保とうと最善を尽くすと述べています。

保証ではありません。取り出し口を増やすとどこまで崩れるのか、実際に処理させて数えました。

取り出し口の数を変える

text
送った順に番号を振った 100,000 件を、取り出し口の数を変えて処理する
処理にかかる時間は 1〜5 の範囲でばらつく。終わった順を並べて、番号が前後した組を数える

取り出し口  入れ替わった件数      割合      いちばん大きなずれ
        1台                0件      0.0%                0件ぶん
        2台           37,087件     37.1%                4件ぶん
        4台           70,372件     70.4%                7件ぶん
        8台           88,318件     88.3%               12件ぶん
       32台           97,598件     97.6%               39件ぶん

1台なら0.0%です。処理時間がばらついても、順に取り出して順に終わります。

2台にした時点で37.1%になります。台数を増やす判断が、そのまま順を崩す判断になっています。

割合とずれ幅は別々

右端の列を見ると、2台でのずれ幅は4件ぶんしかありません。37.1%が入れ替わっても、数個先までです。

32台でも39件ぶんです。ずれ幅はおおむね台数と同じくらいに収まっています。

つまり「順が崩れる」と言っても、遠くまで飛ぶわけではありません。近くの数件が前後します。

割合は一気に上がるが、ずれ幅は台数なりにしか広がらない。

単位: %32台97.6%8台88.3%4台70.4%2台37.1%1台0%10万件での実測。同じ条件でのずれ幅は順に0件・4件・7件・12件・39件ぶん。
図1 ── 取り出し口の数と、入れ替わった割合
出典AWS ドキュメント「Amazon SQS standard queues」2026-08-18 確認
Despite this, standard queues make a best-effort attempt to maintain the order in which messages are sent.
原文AWS ドキュメント「Amazon SQS standard queues」 この内容の有効期限2027-02-18

0.01%でも1000万件なら1,200件が二重になる

二重に届く割合は小さくても、件数が増えれば絶対数として現れます。試験では出ません。

Amazon SQSの標準の並びは、1件以上届くことを保証します。公式は標準の並びは少なくとも1回の配送を保証するが、広く分かれた作りのため、同じものが複数回届くことがあり、時折順が入れ替わって届くと述べています。

「複数回届くことがある」がどれくらいの件数になるのか。割合と件数を並べて数えました。

割合と件数を並べる

text
同じものが2回届く割合を変えて、処理した件数ごとに二重処理が何件になるかを数える

二重で届く割合       10,000件      100,000件    1,000,000件   10,000,000件
0.01%                     2件           15件          100件        1,200件
0.10%                    10件          103件          990件        9,750件
1.00%                    96件        1,008件        9,830件       99,900件
5.00%                   486件        5,035件       50,050件      515,600件

0.01%は、1万件なら2件です。試験で気づける数ではありません。

同じ割合でも、1000万件になれば1,200件です。割合は変わらないのに、扱いは変わります

試験では出ない理由

二重配送は、作りの都合で時々起きるものです。試験の件数では、そもそも一度も起きないことがあります

だから「試したら大丈夫だった」は根拠になりません。件数を増やしたときに初めて出てきます。

この確かめ方の難しさは冪等性の記事でも扱っていて、起きる前提で作るほうが早いという結論は共通しています。

出典AWS ドキュメント「Amazon SQS standard queues」2026-08-18 確認
Standard queues ensure at-least-once message delivery, but due to the highly distributed architecture, more than one copy of a message might be delivered, and messages may occasionally arrive out of order.
原文AWS ドキュメント「Amazon SQS standard queues」 この内容の有効期限2027-02-18

崩れる前提で受け取る側を作る

並びの側では順も回数も直せません。受け取る側に、捨てる仕組みと並べ直す仕組みを置きます。

Amazon SQSは、受け付けた時点で複数の場所に置きます。公式はこの重ね置きにより、1台の計算機・網・区画の故障で取り出せなくなることはないと述べています。

その重ね置きが、順の入れ替わりと二重配送の裏返しでもあります。受け取る側で受け止めます

受け側に置く3つ

  1. 処理した印を残す。同じものの2回目は捨てる
  2. 並べ直す幅を決める。ずれ幅は台数なりなので、その分だけ待つ
  3. 順に依存しない形にする。どちらが先でも結果が同じになるよう組む

1番目は必須です。二重配送は割合の問題で、件数が増えれば必ず出ます

2番目は前の節のずれ幅が効きます。32台でも39件ぶんなので、その程度の窓で並べ直せます

3番目が使えるとき

3番目が使えるなら、いちばん軽くなります。並べ直しも待ちも要りません

使えるのは、更新が置き換えの形になっている場合です。足し引きの形だと、Amazon S3の記事で見たように順や回数がそのまま結果に効きます。

余談 この計測での注意

2つの計測はいずれも手元で書いた模型で、実際のAmazon SQSを叩いたものではありません。順の入れ替わりは、処理時間が1〜5の範囲でばらつくと置いた上での結果で、この幅を変えれば数値も変わります。二重配送の割合も置いたもので、実際の割合を測ったものではありません。ここで見せているのは、取り出し口を1台から2台にしただけで割合が跳ねる一方でずれ幅は台数なりにしか広がらないという点と、小さな割合でも件数が増えれば絶対数になるという点の2つです。

出典AWS ドキュメント「Amazon SQS standard queues」2026-08-18 確認
This redundancy ensures that no single computer, network, or AZ failure can render the messages inaccessible.
原文AWS ドキュメント「Amazon SQS standard queues」 この内容の有効期限2027-02-18

よくある質問

Amazon SQSは順番を守りますか
標準の並びでは守られません。順を保とうとはするものの、時折入れ替わって届くと説明されています。
取り出し口を増やすと何が起きますか
順の入れ替わりが増えます。1台で0.0%、2台で37.1%、32台で97.6%でした。
同じものが二重に届きますか
届くことがあります。1件以上は届くという保証で、複数回届く場合があると説明されています。
二重処理はどう防ぎますか
受け取る側で、同じものの2回目を捨てる作りが要ります。並びの側では防げません。

まとめ

  • 順は保証されない
  • 取り出し口を増やすほど崩れる
  • ずれ幅は台数に近い
  • 二重処理は受け側で防ぐ

今日から始められること

  1. 取り出し口の台数を確かめる
  2. 順に依存している処理を洗い出す
  3. 同じものの2回目を捨てる作りを入れる
  4. ずれ幅がどこまで許せるかを決める

実務で組んだAmazon SQSのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る