

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SQS でのタイムリーな方法でのメッセージ処理
<a name="best-practices-processing-messages-timely-manner"></a>

可視性タイムアウトの設定は、アプリケーションがメッセージを処理し、削除するのにかかる時間によって異なります。たとえば、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 15 分に設定した場合、前のメッセージ処理に失敗すると、再度処理されるまでに長時間待つ必要があります。または、アプリケーションでメッセージを処理するには 10 秒必要だが、可視性タイムアウトを 2 秒に設定した場合は、元のコンシューマーがメッセージを処理している間に別のコンシューマーより重複メッセージが送信されます。

メッセージの処理に十分な時間を確保するために、次のいずれかの方法を使用します:
+ メッセージの処理にかかる時間がわかっている (または合理的に見積もることができる) 場合は、メッセージの*可視性タイムアウト*を、メッセージの処理と削除にかかる最大時間に拡張します。詳細については、\$1[可視性タイムアウトの構成](sqs-visibility-timeout.md#configuring-visibility-timeout)｝を参照してください。
+ メッセージの処理にかかる時間がわからない場合は、コンシューマプロセスについて*ハートビート*を作成:初期可視性タイムアウト (2 分など) を特定し、コンシューマがメッセージで作業している限り、可視性タイムアウトを 1 分ごとに 2 分延長します。
**重要**  
最大可視性タイムアウトは、`ReceiveMessage`Amazon SQS がメッセージを受信してから 12 時間です。可視性タイムアウトを延長しても、12 時間の上限はリセットされません。  
さらに、`ReceiveMessage` リクエストによってタイマーが開始されるため、個々のメッセージのタイムアウトは上限の 12 時間 (43,200 秒) に設定できない場合があります。例えば、メッセージを受信して、すぐに `VisibilityTimeout` を 43,200 秒に等しく設定して `ChangeMessageVisibility` コールを送信すると、失敗する場合があります。ただし、値として 43,195 秒を使用すると、`ReceiveMessage` 経由でメッセージをリクエストしてから可視性タイムアウトを更新するまでに大幅な遅延がない限り、成功します。コンシューマーが 12 時間以上必要とする場合は、Step Functionsの使用を検討してください。