

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

# Amazon SQS の ReceiveMessage API コールで返されないメッセージのトラブルシューティング
<a name="troubleshooting-messages-not-returned-ReceiveMessage"></a>

以下のトピックでは、Amazon SQS メッセージがコンシューマーに返されない場合の最も一般的な原因およびトラブルシューティング方法について説明します。詳細については、「*AWS 情報センターガイド*」の「[Amazon SQS キューからメッセージを受信できない理由を知りたいです。](https://repost.aws/knowledge-center/sqs-queue-message)」を参照してください。

## 空のキュー
<a name="troubleshooting-empty-queue"></a>

キューが空かどうかを判断するには、ロングポーリングを使用して [`ReceiveMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) API を呼び出します。CloudWatch メトリクス `ApproximateNumberOfMessagesVisible`、`ApproximateNumberOfMessagesNotVisible`、`ApproximateNumberOfMessagesDelayed` を使用することもできます。すべてのメトリクス値が数分間 0 に設定されている場合、キューは空と見なされます。

## インフライト制限に到達
<a name="troubleshooting-in-flight-limit-reached"></a>

[ロングポーリング](sqs-short-and-long-polling.md#sqs-long-polling)を使用すると、キューのインフライト制限 (デフォルトで 120,000) を超えても、Amazon SQS は[クォータ制限を超えた](sqs-quotas.md)というエラーメッセージを返しません。

## メッセージの遅延
<a name="troubleshooting-message-delayed"></a>

Amazon SQS キューを[遅延キュー](sqs-delay-queues.md)として設定するか、メッセージを[メッセージタイマー](sqs-message-timers.md)付きで送信した場合、遅延時間が終わるまでメッセージは表示されません。キューが遅延キューとして設定されているかどうかは、[`GetQueueAttributes`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html) API の `DelaySeconds` 属性またはキューコンソールの **[配信遅延]** で確認します。メッセージが遅延しているかどうかは、CloudWatch メトリクス [`ApproximateNumberOfMessagesDelayed`](sqs-available-cloudwatch-metrics.md) で確認します。

## メッセージはインフライト状態
<a name="troubleshooting-message-in-flight"></a>

別のコンシューマーがメッセージをポーリングすると、[可視性タイムアウト](sqs-visibility-timeout.md)期間中、メッセージはインフライト状態つまり非表示になります。以降のポーリングでは、空の受信が返される可能性があります。受信できるメッセージの数を確認するには、CloudWatch メトリクス [ApproximateNumberOfMessagesVisible](sqs-available-cloudwatch-metrics.md) をチェックします。FIFO キューの場合、メッセージグループ ID を持つメッセージがインフライトになると、このメッセージが削除されるか表示されるまで、追加のメッセージは返されません。これは、[メッセージの順序付け](sqs-fifo-queues.md)が FIFO キューのメッセージグループレベルで維持されるためです。

## ポーリング方法
<a name="troubleshooting-polling-method"></a>

[ショートポーリング](sqs-short-and-long-polling.md#sqs-short-polling)を使用している場合 ([WaitTimeSeconds](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#API_ReceiveMessage_RequestSyntax) が 0)、Amazon SQS はサーバーのサブセットをサンプリングし、これらのサーバーからのメッセージのみを返します。したがって、メッセージが受信可能な場合でも、メッセージを取得できないことがあります。後続のポーリングリクエストではメッセージが返されます。

[ロングポーリング](sqs-short-and-long-polling.md#sqs-long-polling)を使用している場合、Amazon SQS はすべてのサーバーをポーリングし、利用可能なメッセージを 1 つ以上 (指定された最大数まで) 収集した後で、レスポンスを送信します。ReceiveMessage の [WaitTimeSeconds](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html#API_ReceiveMessage_RequestSyntax) の値が低すぎると、利用可能なメッセージのすべては受信できない可能性があります。