翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SQS でデッドレターキューを使用します
Amazon SQS はデッドレターキュー (DLQsをサポートしています。このキューは、正常に処理されないメッセージを対象にできます。DLQsは、未使用のメッセージを分離して処理が成功しなかった理由を判断できるため、アプリケーションのデバッグに役立ちます。最適なパフォーマンスを得るには、ソースキューと DLQ を同じ AWS アカウント とリージョン内に保持するのがベストプラクティスです。メッセージがデッドレターキューに入ると、次のことが可能になります。
-
デッドレターキューにメッセージが移動する原因となった例外をログを調べる。
-
デッドレターキューに移動したメッセージの内容を分析して、アプリケーションの問題を診断します。
-
コンシューマーがメッセージを処理するために十分な時間が設定されているかどうかを調べる。
-
デッドレターキューリドライブ を使用して、デッドレターキューからメッセージを移動します。
デッドレターキューとして設定する前に、まず新しいキューを作成する必要があります。Amazon SQS コンソールを使用したデッドレターキューの設定についての詳細は、「Amazon SQS コンソールを使用してデッドレターキューを設定する方法について説明します。」を参照してください。デッドレターキューに移動されたメッセージのアラームを設定する方法など、デッドレターキューに関するヘルプについては、「」を参照してくださいAmazon を使用してデッドレターキューのアラームを作成する CloudWatch。
デッドレターキューのポリシーの使用
リドライブポリシーを使用して を指定しますmaxReceiveCount
。maxReceiveCount
は、コンシューマーがデッドレターキューに移動する前にソースキューからメッセージを受信できる回数です。例えば、 maxReceiveCount
が 1 などの低い値に設定されている場合、メッセージの受信に 1 回失敗すると、メッセージがデッドレターキューに移動します。システムがエラーに対して回復力を持つようにするには、maxReceiveCount
十分な再試行ができるように高めに設定してください。
リドライブ許可ポリシーはデッドレターキューにアクセスできるソースキューを指定します。すべてのソースキューを許可するか、特定のソースキューを許可するか、すべてのソースキューによるデッドレターキューの使用を拒否するかを選択できます。デフォルトでは、すべてのソースキューがデッドレターキューを使用できます。byQueue
オプションを使用して特定のキューを許可する場合は、ソースキューの Amazon リソースネーム (ARN) を使用して最大 10 個のソースキューを指定できます。denyAll
を指定した場合、キューをデッドレターキューとして使用することはできません。
デッドレターキューのメッセージ保持期間を理解する
スタンダードキューでは、メッセージの有効期限は、常に元のエンキューのタイムスタンプに基づきます。デッドレターキューに移動すると、エンキューのタイムスタンプは変更されません。ApproximateAgeOfOldestMessage
メトリクスは、メッセージが最初に送信された時刻ではなく、メッセージがデッドレターキューに移動された時刻を示します。たとえば、メッセージがデッドレターキューに移動される前に、元のキューで1日費やすと仮定します。デッドレターキューの保持期間が4日間である場合、メッセージは3日後にデッドレターキューから削除され、ApproximateAgeOfOldestMessage
は3日間です。したがって、デッドレターキューの保持期間を、元のキューの保持期間よりも長く設定することがベストプラクティスです。
FIFO キューでは、メッセージがデッドレターキューに移動すると、エンキューのタイムスタンプがリセットされます。ApproximateAgeOfOldestMessage
メトリクスは、メッセージがデッドレターキューに移動した日を示します。上記の同じ例では、メッセージは 4 日後にデッドレターキューから削除され、ApproximateAgeOfOldestMessage
は 4 日間です。