すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RocketMQ:メッセージの消費操作

最終更新日:Jul 09, 2024

この操作を呼び出して、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>