ある企業が、Amazon SQS 標準キューを使ってメッセージ処理システムを構築している。コンシューマーの処理には平均 5 分かかり、処理中に他のコンシューマーが同じメッセージを取得しないようにしたい。また、処理が 7 分経過しても完了しなかった場合は別のコンシューマーが再試行できるようにしたい。最も適切な可視性タイムアウトの設定値はどれか。
- A. 12 時間(43,200 秒)
- B. 30 秒
- C. 7 分(420 秒)
- D. 5 分(300 秒)
解答と解説を見る
正解: C
SQS の可視性タイムアウトは、あるコンシューマーがメッセージを取得した後、他のコンシューマーにそのメッセージが見えなくなる期間である。処理に平均 5 分かかるが、7 分を超えたら別のコンシューマーが再試行できるよう設定したい場合、可視性タイムアウトを 7 分(420 秒)に設定するのが適切である。コンシューマーは処理完了後にメッセージを削除する。7 分以内に削除されなければメッセージは再び可視状態になり、別のコンシューマーが取得できる。選択肢Bの 30 秒は処理時間 5 分より短く、処理中に他のコンシューマーが同じメッセージを取得してしまう(重複処理)。選択肢Dの 5 分は処理時間の平均値と同じだが、処理が 5 分を超えた場合に重複取得が発生する可能性がある。7 分で再試行させたいという要件に合わない。選択肢Aの 12 時間は非常に長すぎるため、処理に失敗した場合の再試行までに 12 時間待つことになり、「7 分で再試行」の要件に合わない。