DVAトラブルシューティングと最適化

Amazon SQSキューからメッセージを取得して処理するアプリケーションがあります。メッセージのフォーマット不正やバックエンドDBの障害により、特定のメッセージの処理が何度も失敗しています。失敗し続けるメッセージが無限にキューに残り、他の正常な処理を阻害するのを防ぐために、最も適切なSQSの設定はどれですか。

A
メッセージの保持期間(MessageRetentionPeriod)を1時間に短縮し、古いメッセージを自動削除する。
保持期間を短縮すると、障害とは無関係に一時的な遅延で処理待ちになっている正常なメッセージまで削除されてしまう危険があります。
B
デッドレターキュー(DLQ)を設定し、レッドライブポリシーで maxReceiveCount の値を指定する。
✓ 正解
デッドレターキュー(DLQ)とmaxReceiveCountを設定することで、指定回数失敗したメッセージのみを安全に別のキューへ隔離・調査できます。
C
可視性タイムアウト(VisibilityTimeout)の値をデフォルトの30秒から0秒に変更する。
可視性タイムアウトを0秒にすると、ワーカーがメッセージを取得した瞬間に他のワーカーからも見えるようになり、即座に重複処理が発生します。
D
遅延キュー(DelayQueue)を有効にして、処理に失敗したメッセージの再表示を15分間遅らせる。
遅延キューはキューに新しく送信されたメッセージがコンシューマーに見えるまでの初期遅延を設定するもので、エラー時の再試行制御や隔離には使用しません。

解説

処理に何度も失敗する「ポイズンピル(Poison Pill)」メッセージを隔離するには、デッドレターキュー(DLQ)を構成するのが最適です。メインのキューにレッドライブポリシー(Redrive Policy)を設定し、最大受信回数(`maxReceiveCount`)を指定します。ワーカーがメッセージの処理に失敗し、取得回数がこの上限に達すると、SQSはそのメッセージを自動的にDLQへ移動させ、メインキューの処理詰まりを防ぎます。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る