この操作を呼び出して、ApsaraMQ for RocketMQブローカーからのメッセージを消費できます。
リクエストの構造
リクエスト行
GET /topics/TopicName/messages?ns=INSTANCE_ID&consumer=GID&tag=taga&numOfMessages=3&waitseconds=3 HTTP/1.1
重要リクエスト行の合計長は1,024文字を超えることはできません。
次の表に、リクエストラインのパラメーターを示します。
パラメーター
必須
説明
TopicName
Yes
メッセージを消費するトピックの名前。
ns
No
インスタンス ID 。 このパラメーターは、名前空間を持つ新しいインスタンスに必要です。
ApsaraMQ for RocketMQコンソールの [インスタンスの詳細] ページで、インスタンスに名前空間があるかどうかを確認します。 インスタンスは、名前空間があるかどうかに基づいて、デフォルトインスタンスと新しいインスタンスに分類されます。
デフォルトインスタンス: デフォルトインスタンスには名前空間がありません。 デフォルトインスタンスのすべてのリソースの名前は、グローバルに一意である必要があります。
新しいインスタンス: 新しいインスタンスには名前空間があります。 新しいインスタンスのすべてのリソースの名前は、インスタンス内で一意である必要があります。
詳細は、「インスタンスの使用」をご参照ください。
consumer
Yes
消費者グループID。
tag
No
メッセージタグ。 タグを指定しないと、すべてのメッセージがプルされます。 複数のタグを指定する場合は、ダブル縦棒 (| |) で区切ります。 例: TagA | | TagB.
numOfMessages
Yes
一度に消費できるメッセージの最大数。 有効な値: 1 ~ 16。
waitseconds
No
長いポーリング期間。 このパラメーターを0に設定するか、このパラメーターを空のままにすると、ショートポーリングが使用されます。
有効な値: 0 ~ 30。 単位は秒です。
消費者が消費のためにブローカからメッセージを取得するとき、消費者は、ロングポーリングモードまたはショートポーリングモードを使用することができる。
ロングポーリング: コンシューマーはブローカーにリクエストを送信し、特定のトピックのメッセージを取得します。 トピックにメッセージが存在しない場合、ブローカーは要求を中断し、メッセージがトピックで生成されるか、または長いポーリングの指定された期間が経過するまで応答を返します。
ショートポーリング: トピックにメッセージが存在しない場合、ブローカーはすぐに応答を返します。 クライアントは、応答を受信した後、サブスクリプション要求を繰り返し開始する。
説明短いポーリングモードを使用していて、トピックでメッセージが生成されない場合、多数の無効なリクエストが生成される可能性があります。 これらのリクエストに対してAPI呼び出し料金が請求されます。 無効なサブスクリプションリクエストの数を減らし、コストを節約するために、ロングポーリングモードを使用し、ロングポーリングの待ち時間を増やすことを推奨します。 API呼び出し料金の計算方法については、「API呼び出し料金」をご参照ください。
リクエスト本文 (XML形式)
なし。
レスポンス構造
メッセージを使用できます。
レスポンス行
HTTP/1.1 200
レスポンスボディ
次の表に、レスポンス本文のパラメーターを示します。
パラメーター
データ型
説明
MessageId
String
メッセージ ID。
MessageBodyMD5
String
メッセージ本文のMD5ハッシュ値。
MessageBody
String
メッセージ本文。
ReceiptHandle
String
メッセージが消費されたことを確認するために使用される受信ハンドル。 レシートハンドルは1回のみ使用でき、NextConsumeTimeパラメーターで指定された期間が経過する前に使用する必要があります。 同じメッセージが再試行されて消費されるたびに取得されるレシートハンドルは異なります。
PublishTime
String
メッセージが送信された時刻を示すタイムスタンプ。 単位:ミリ秒。
FirstConsumeTime
String
メッセージが初めて消費された時刻を示すタイムスタンプ。 単位:ミリ秒。
NextConsumeTime
String
メッセージが再試行された絶対時刻を示すタイムスタンプ。 単位:ミリ秒。
説明HTTP経由でApsaraMQ for RocketMQに接続する場合、順序付けられていないメッセージは5分ごとに再試行され、順序付けられたメッセージは1分ごとに再試行されます。 各メッセージは288回まで再試行できます。
ConsumedTimes
String
メッセージの消費に失敗した後のリトライ回数。
MessageTag
String
メッセージタグ。
プロパティ
String
メッセージ属性。
次の項目は、メッセージのシリアル化属性のキーと値のペアを示しています。
キーと値のペアは、
key1:value1 | key2:value2 | key3:value3
形式で表示されます。次の表に、キーと値のペアのパラメーターを示します。
パラメーター
データ型
説明
キー
String
メッセージキー。
__STARTDELIVERTIME
Long
スケジュールされたメッセージの絶対スケジュール時間。 この値はミリ秒単位の UNIX タイムスタンプです。
__TransCheckT
Long
トランザクションメッセージの最初のステータスチェックが実行される時間を示す相対時間。 単位は秒です。 有効な値: 10 ~ 300
利用可能なメッセージはありません。
レスポンス行
HTTP/1.1 404
レスポンスボディ
次の表に、レスポンス本文のパラメーターを示します。
パラメーター
データ型
説明
Code
String
エラーコードを示します。
MessageNotExist
は、使用できるメッセージがないことを示します。 このエラーコードが返された場合、応答は正常な応答です。Message
String
エラーメッセージを示します。
RequestId
String
リクエスト ID。
HostId
String
リクエストを送信したホスト。
レスポンスの例
メッセージを使用できます。
<?xml version="1.0" ?> <Messages xmlns="http://mq.aliyuncs.com/doc/v1"> <Message> <MessageId>1E057D5E6EAD42A579937046FE17****</MessageId> <MessageBodyMD5>0CC175B9C0F1B6A831C399E26977****</MessageBodyMD5> <MessageBody>a</MessageBody> <ReceiptHandle>1E057D5E6EAD42A579937046FE17****-MTI5N****</ReceiptHandle> <PublishTime>1571742900759</PublishTime> <FirstConsumeTime>1571742902463</FirstConsumeTime> <NextConsumeTime>1571742922463</NextConsumeTime> <ConsumedTimes>1</ConsumedTimes> <MessageTag>Tag</MessageTag> <Properties>KEYS:MessageKey|__BORNHOST:30.5.**.**|</Properties> </Message> <Message> <MessageId>1E057D5E6EAD42A579937046FE17****</MessageId> <MessageBodyMD5>0CC175B9C0F1B6A831C399E26977****</MessageBodyMD5> <MessageBody>a</MessageBody> <ReceiptHandle>1E057D5E6EAD42A579937046FE17****-MTI5N****</ReceiptHandle> <PublishTime>1571742900759</PublishTime> <FirstConsumeTime>1571742902463</FirstConsumeTime> <NextConsumeTime>1571742922463</NextConsumeTime> <ConsumedTimes>1</ConsumedTimes> <MessageTag>Tag</MessageTag> <Properties>KEYS:MessageKey|__BORNHOST:30.5.**.**|</Properties> </Message> </Messages>
利用可能なメッセージはありません。
<?xml version="1.0" ?> <Error xmlns="http://mq.aliyuncs.com/doc/v1"> <Code>MessageNotExist</Code> <Message>Message not exist.</Message> <RequestId>5DAEE3FF463541AD6E0322EB</RequestId> <HostId>http://123.mqrest.cn-hangzhou.aliyuncs.com</HostId> </Error>