キューからメッセージを受信し、キューの VisibilityTimeout 期間中、メッセージを非アクティブ状態に設定します。DeleteMessage を呼び出して、この期間が終了する前にメッセージを完全に削除してください。期間内に削除されない場合、メッセージはアクティブ状態に戻り、再度消費可能になります。
権限情報
デフォルトでは、Alibaba Cloud アカウント (root ユーザー) のみがこの操作を呼び出すことができます。Resource Access Management (RAM) ユーザーとしてこの操作を呼び出すには、RAM ユーザーに必要な権限を付与する必要があります。詳細については、「権限ポリシーと例」をご参照ください。
| 項目 | 値 |
|---|---|
| API オペレーション | ReceiveMessage |
| アクション | mns:ReceiveMessage |
| リソース | acs:mns:$region:$accountid:/queues/$queueName/messages |
リクエスト構文
GET /queues/$queueName/messages?waitseconds=10 HTTP/1.1この操作には、操作固有のリクエストヘッダーやリクエストボディはありません。
URI パラメーター
| パラメーター | 型 | 必須 | 例 | 説明 |
|---|---|---|---|---|
| waitseconds | Integer | いいえ | 0 | メッセージが利用できない場合の最大待機時間 (秒単位) です。省略した場合、キューの PollingWaitSeconds の値が適用されます。詳細については、「CreateQueue」をご参照ください。 |
ロングポーリングの動作
waitseconds が設定されている場合 (またはキューのデフォルトの PollingWaitSeconds が適用される場合)、サーバーはメッセージが到着するか、待機期間が終了するまで接続を保持します。この期間中にキューに書き込まれたメッセージは、すぐに配信されます。
同時ロングポーリングリクエストの数を減らし、適切な待機期間を指定することを推奨します。詳細については、「ショートポーリングとロングポーリング」をご参照ください。
Simple Message Queue (SMQ、旧 MNS) は、リクエストの総数、待機期間、および送信元 IP アドレスに基づいて、同時ロングポーリングリクエストを制限します。この制限を超えると、SMQ はリクエストを保持せずにすぐに 404 MessageNotExist エラーを返し、標準のリクエスト料金が適用されます。この制限を引き上げるには、してください。
レスポンス
HTTP ステータスコード
HTTP/1.1 200 OKこの操作には、操作固有のレスポンスヘッダーはありません。
レスポンスボディ
レスポンスボディは XML フォーマットで、次の情報が含まれます。
メッセージ本文とその MD5 ハッシュ
一意のメッセージ ID
メッセージが非アクティブ状態の間に、そのメッセージを削除または変更するための受信ハンドル
タイムスタンプ:エンキュー時間、初回デキュー時間、次回可視時間
デキュー回数
| パラメーター | 型 | 例 | 説明 |
|---|---|---|---|
| MessageId | String | 5F290C926D472878-2-14D9529A8FA-20000\*\*\*\* | キュー内でメッセージを一意に識別する ID。 |
| ReceiptHandle | String | 1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== | メッセージが非アクティブ状態の間、メッセージを削除または変更するためのハンドルです。DeleteMessageChangeMessageVisibility または を呼び出すときにこの値を使用します。NextVisibleTime まで有効です。 |
| MessageBody | String | This is a test message | メッセージのコンテンツ。 |
| MessageBodyMD5 | String | C5DD56A39F5F7BB8B3337C6D11B6\*\*\*\* | メッセージ本文の MD5 ハッシュ。 |
| EnqueueTime | Long | 1250700979248 | メッセージがキューに送信された時刻。1970 年 1 月 1 日 00:00:00 (協定世界時 (UTC)) からの UNIX タイムスタンプ (ミリ秒単位)。 |
| NextVisibleTime | Long | 1250700799348 | 削除されない場合にメッセージが再び可視になる時刻。1970 年 1 月 1 日 00:00:00 (協定世界時 (UTC)) からの UNIX タイムスタンプ (ミリ秒単位)。 |
| FirstDequeueTime | Long | 1250700779318 | メッセージが最初に消費された時刻。1970 年 1 月 1 日 00:00:00 (協定世界時 (UTC)) からの UNIX タイムスタンプ (ミリ秒単位)。 |
| DequeueCount | Integer | 1 | メッセージが消費された回数。 |
例
リクエスト例
GET /queues/$queueName/messages HTTP/1.1
Host: $AccountId.mns.cn-hangzhou.aliyuncs.com
Date: Wed, 28 May 2012 22:32:00 GMT
x-mns-version: 2015-06-06
Authorization: MNS 15B4D3461F177624206A:xQE0diMbLRepdf3YB+FIEXA****レスポンス例
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Content-Length: 500
x-mns-request-id: 512B2A634403E52B1956****
x-mns-version: 2015-06-06
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA==</ReceiptHandle>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
<MessageBody>This is a test message</MessageBody>
<EnqueueTime>1250700979248</EnqueueTime>
<NextVisibleTime>1250700799348</NextVisibleTime>
<FirstDequeueTime>1250700779318</FirstDequeueTime>
<DequeueCount>1</DequeueCount>
<Priority>8</Priority>
</Message>エラーコード
| エラーコード | エラーメッセージ | HTTP ステータスコード | 説明 |
|---|---|---|---|
| QueueNotExist | The queue name you provided is not exist. | 404 | 指定されたキューは存在しません。この操作を呼び出す前にキューを作成してください。 |
| MessageNotExist | Message not exist. | 404 | キューに可視メッセージが存在しません。 |
次のステップ
複数のメッセージを1回の呼び出しで受信する: BatchReceiveMessage
消費されたメッセージを削除する場合:DeleteMessage
VisibilityTimeoutやPollingWaitSecondsなどのキュー属性を設定する場合:CreateQueue