

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

# Amazon SQSショートポーリングとロングポーリング
<a name="sqs-short-and-long-polling"></a>

Amazon SQS には、キューからメッセージを受信するためのオプションとして、ショートポーリングとロングポーリングがあります。この 2 つのポーリングオプションのいずれかを選択する場合は、応答性とコスト効率に関するアプリケーションの要件を考慮してください。
+ **ショートポーリング** (デフォルト) – [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) リクエストは、サーバーのサブセット (加重ランダム分布に基づく) にクエリを実行して使用可能なメッセージを検索し、メッセージが見つからない場合でもレスポンスを即時送信します。
+ **ロングポーリング** – [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) は、すべてのサーバーに対してメッセージの有無をクエリし、1 つ以上のメッセージが (指定された最大数まで) 使用可能になると、レスポンスを送信します。ポーリングの待機時間が期限切れになった場合にのみ、空のレスポンスが送信されます。このオプションを使用すると、空のレスポンスの数が減少し、コストが削減される可能性があります。

次のセクションでは、ショートポーリングとロングポーリングの詳細について説明します。

## ショートポーリングを使用したメッセージの処理
<a name="sqs-short-polling"></a>

ショートポーリングを使用して (FIFO または標準) キューのメッセージを消費すると、Amazon SQS はサーバーのサブセットを (加重ランダム分布に基づいて) サンプリングし、これらのサーバーのメッセージだけを返します。したがって、特定の [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) リクエストで、すべてのメッセージは返されない場合があります。ただし、キューにあるメッセージが1,000未満の場合、後続のリクエストではメッセージが返されます。キューから処理し続けた場合、Amazon SQSによりすべてのサーバーがサンプリングされ、すべてのメッセージを受信します。

次の図は、システムコンポーネントの 1 つが受信リクエストを行った後で、標準キューからメッセージを返すショートポーリングの動作を示しています。Amazon SQSは、複数のサーバー (灰色) をサンプリングし、それらのサーバーからメッセージ A、C、D、および B を返信します。メッセージ E はこのリクエストに返されませんが、後続のリクエストには返されます。

![ショート(標準) ポーリングを使用したメッセージのサンプリング](http://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/ArchOverview_Receive.png)


## ロングポーリングを使用したメッセージの使用
<a name="sqs-long-polling"></a>

待ち時間がいつになるか`[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)`API アクションが0より大きい場合*ロングポーリング*が有効です。ロングポーリングの最大待機時間は 20 秒です。ロングポーリングは、空のレスポンス (`ReceiveMessage`リクエストに使用可能なメッセージがない場合) と偽の空のレスポンス (メッセージが使用可能でレスポンスに含まれていない場合) の数を減らすことで、Amazon SQS を使用するコストを削減します。Amazon SQSコンソールを使用して、新しいキューまたは既存のキューのロングポーリングを有効にする方法については、[Amazon SQS コンソールを使用したキューのパラメータの設定](sqs-configure-queue-parameters.md)を参照してください。ベストプラクティスについては、[Amazon SQS でのロングポーリングの設定](best-practices-setting-up-long-polling.md)を参照してください。

ロングポーリングには次の利点があります。
+ レスポンスの送信前にメッセージがキューで使用可能になるまで Amazon SQSが待機できるように、空のレスポンス数を削減します。接続がタイムアウトしない限り、`ReceiveMessage`リクエストに対するレスポンスに、使用可能なメッセージが少なくとも1つ、最大で`ReceiveMessage`アクションに指定されたメッセージ数まで含まれます。まれに、キューにまだメッセージが含まれている場合でも、空の応答が受信されることがあります、特に、[https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#SQS-ReceiveMessage-request-WaitTimeSeconds](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#SQS-ReceiveMessage-request-WaitTimeSeconds) パラメータに低い値を指定した場合。
+ サブセットではなく、すべての Amazon SQSサーバーにクエリを実行して、偽の空のレスポンスを減らします。
+ 利用可能になるとすぐにメッセージを返します。

キューが空であることを確認する方法については、[Amazon SQS キューが空であることを確認する](confirm-queue-is-empty.md)を参照してください。

## ロングポーリングとショートポーリングの違い
<a name="sqs-short-long-polling-differences"></a>

ショートポーリングは、`[ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html)` リクエストの [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#SQS-ReceiveMessage-request-WaitTimeSeconds](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#SQS-ReceiveMessage-request-WaitTimeSeconds) パラメータを次の 2 通りの方法で `0` に設定すると行われます。
+ `ReceiveMessage`コールは `WaitTimeSeconds` を `0` に設定します。
+ `ReceiveMessage` コールでは `WaitTimeSeconds` を設定しませんが、キューの属性 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html) は `0` に設定されます。