メッセージの消費
キューとそのチャネルからメッセージを消費します。
メッセージの消費には、キューに対する権限と、そのメッセージ・エンドポイントへのアクセスが必要です。
GetMessages
リクエストに対するレスポンスには、ペイロード、メッセージID、有効期限、表示タイムアウト、配信数およびreceipt
を含むメッセージのリストが含まれます。1つのレスポンスで返されるメッセージの最大数は20ですが、返されるメッセージの実際の数は、使用可能なメッセージの数と、リクエストで長いポーリングを使用するかどうかによって異なります。
コンシューマは、メッセージのreceipt
を必要とするメッセージの更新およびメッセージの削除を担当します。
メッセージのロック
コンシューマは、別のコンシューマが同じメッセージを取得できません。メッセージは、表示タイムアウトを指定することによってロックされます。キューAPIは、visibilityInSeconds
パラメータを使用してこの値を設定します。
表示タイムアウトは、キューの作成時にキュー・レベルで設定することも、メッセージの消費または更新時に指定することもできます。コンシューマでメッセージを正常に処理できない場合は、メッセージを更新して非表示状態を延長できます。メッセージの表示タイムアウトが延長されず、コンシューマがメッセージを削除しない場合、キューに戻ります。
消費する際に、表示タイムアウトを指定する必要はありません。キューに対して構成された可視性タイムアウトがリクエストに適用されます。キューを作成する場合、デフォルトの表示タイムアウトは30秒です。リクエストにオプションの表示タイムアウト・パラメータを含める場合は、0秒の最小値と12時間の最大値を指定できます。
0の表示タイムアウトを使用すると、事実上、閲覧機能として機能します。この方法で取得されたメッセージは、表示状態が変更されないため、おそらく別のコンシューマに配信されます。
配信数
メッセージがGetMessages
リクエストの使用またはコンソール・ポーリングによって取得されるたびに、配信数が増加します。配信数がキューの構成済の最大値を超えると、メッセージは配信不能キューに送信されます。
ロング・ポーリング
デフォルトでは、GetMessages
リクエストはロング・ポーリングを使用します。リクエストが30秒間メッセージを待機し、タイムアウトが経過して消費可能なメッセージがない場合、リクエストは空のレスポンスを返します。ロング・ポーリングは、空のレスポンスに対して短期間での再試行を防止するのに役立ちます。
コンシューマは、0から30秒の値を受け入れるtimeoutInSeconds
パラメータをリクエストに含めることで、この動作を変更できます。timeoutInSeconds
値を0に設定すると、使用可能なメッセージがあるかどうかに関係なく、キューからの即時レスポンスになります。