All Products
Search
Document Center

ApsaraMQ for RocketMQ:Operasi untuk mengonsumsi pesan

Last Updated:Jul 02, 2025

Anda dapat memanggil operasi ini untuk mengonsumsi pesan dari broker ApsaraMQ for RocketMQ.

Struktur permintaan

  • Baris Permintaan

    GET /topics/TopicName/messages?ns=INSTANCE_ID&consumer=GID&tag=taga&numOfMessages=3&waitseconds=3 HTTP/1.1

    Penting

    Total panjang baris permintaan tidak boleh melebihi 1.024 karakter.

    Tabel berikut menjelaskan parameter dalam baris permintaan:

    Parameter

    Diperlukan

    Deskripsi

    TopicName

    Ya

    Nama topik dari mana Anda ingin mengonsumsi pesan.

    ns

    Tidak

    ID instance. Parameter ini diperlukan untuk instance baru yang memiliki namespace.

    Periksa apakah instance Anda memiliki namespace di halaman Instance Details di konsol ApsaraMQ for RocketMQ. Instance diklasifikasikan menjadi instance default dan instance baru berdasarkan apakah mereka memiliki namespace.

    • Instance default: Instance default tidak memiliki namespace. Nama semua sumber daya dalam instance default harus unik secara global.

    • Instance baru: Instance baru memiliki namespace. Nama semua sumber daya dalam instance baru harus unik dalam instance tersebut.

    Untuk informasi lebih lanjut, lihat Menggunakan instance.

    consumer

    Ya

    ID grup konsumen.

    tag

    Tidak

    Tag pesan. Jika Anda tidak menentukan tag, semua pesan akan ditarik. Jika Anda ingin menentukan beberapa tag, pisahkan mereka dengan dua garis vertikal (||). Contoh: TagA||TagB.

    numOfMessages

    Ya

    Jumlah maksimum pesan yang dapat dikonsumsi sekaligus. Nilai valid: 1 hingga 16.

    waitseconds

    Tidak

    Periode polling panjang. Jika Anda menetapkan parameter ini ke 0 atau meninggalkannya kosong, polling pendek digunakan.

    Nilai valid: 0 hingga 30. Unit: detik.

    Ketika konsumen mendapatkan pesan dari broker untuk dikonsumsi, konsumen dapat menggunakan mode polling panjang atau polling pendek.

    • Polling panjang: Konsumen mengirimkan permintaan ke broker untuk mendapatkan pesan dalam topik tertentu. Jika tidak ada pesan dalam topik, broker menangguhkan permintaan dan mengembalikan respons sampai pesan diproduksi dalam topik atau periode polling panjang yang ditentukan berakhir.

    • Polling pendek: Jika tidak ada pesan dalam topik, broker segera mengembalikan respons. Setelah klien menerima respons, klien berulang kali menginisiasi permintaan langganan.

    Catatan

    Jika Anda menggunakan mode polling pendek dan tidak ada pesan yang diproduksi dalam topik, sejumlah besar permintaan tidak valid mungkin dihasilkan. Anda dikenakan biaya panggilan API untuk permintaan ini. Untuk mengurangi jumlah permintaan langganan tidak valid dan menghemat biaya, kami sarankan Anda menggunakan mode polling panjang dan meningkatkan waktu tunggu untuk polling panjang. Untuk informasi tentang cara menghitung biaya panggilan API, lihat Biaya panggilan API.

  • Badan Permintaan (Format XML)

    Tidak ada.

Struktur respons

  • Pesan tersedia untuk dikonsumsi.

    • Baris Respons

      HTTP/1.1 200

    • Badan Respons

      Tabel berikut menjelaskan parameter dalam badan respons:

      Parameter

      Tipe

      Deskripsi

      MessageId

      String

      ID pesan.

      MessageBodyMD5

      String

      Nilai hash MD5 dari badan pesan.

      MessageBody

      String

      Badan pesan.

      ReceiptHandle

      String

      Handle penerimaan yang digunakan untuk mengakui bahwa pesan telah dikonsumsi. Handle penerimaan hanya dapat digunakan sekali dan harus digunakan sebelum periode waktu yang ditentukan oleh parameter NextConsumeTime berakhir. Handle penerimaan yang diperoleh setiap kali pesan yang sama diulang dan dikonsumsi berbeda-beda.

      PublishTime

      String

      Timestamp yang menunjukkan waktu ketika pesan dikirim. Unit: milidetik.

      FirstConsumeTime

      String

      Timestamp yang menunjukkan waktu ketika pesan dikonsumsi untuk pertama kalinya. Unit: milidetik.

      NextConsumeTime

      String

      Timestamp yang menunjukkan waktu absolut ketika pesan diulang. Unit: milidetik.

      Catatan

      Jika Anda terhubung ke ApsaraMQ for RocketMQ melalui HTTP, pesan non-terurut diulang setiap 5 menit dan pesan terurut diulang setiap menit. Setiap pesan dapat diulang hingga 288 kali.

      ConsumedTimes

      String

      Jumlah pengulangan setelah pesan gagal dikonsumsi.

      MessageTag

      String

      Tag pesan.

      Properties

      String

      Atribut pesan.

      Item berikut menjelaskan pasangan nilai-kunci dalam atribut serial pesan:

      • Pasangan nilai-kunci ditampilkan dalam format key1:value1|key2:value2|key3:value3.

      • Tabel berikut menjelaskan parameter dalam pasangan nilai-kunci:

        Parameter

        Tipe

        Deskripsi

        KEYS

        String

        Kunci pesan.

        __STARTDELIVERTIME

        Long

        Waktu terjadwal absolut dari pesan terjadwal. Nilai ini adalah timestamp UNIX dalam milidetik.

        __TransCheckT

        Long

        Waktu relatif yang menunjukkan waktu ketika pemeriksaan status pertama untuk pesan transaksional dilakukan. Unit: detik. Nilai valid: 10 hingga 300.

  • Tidak ada pesan yang tersedia untuk dikonsumsi.

    • Baris Respons

      HTTP/1.1 404

    • Badan Respons

      Tabel berikut menjelaskan parameter dalam badan respons:

      Parameter

      Tipe

      Deskripsi

      Code

      String

      Kode kesalahan. MessageNotExist menunjukkan bahwa tidak ada pesan yang tersedia untuk dikonsumsi. Jika kode kesalahan ini dikembalikan, respons tersebut adalah respons normal.

      Message

      String

      Pesan kesalahan.

      RequestId

      String

      ID permintaan.

      HostId

      String

      Host yang mengirim permintaan.

Contoh respons

  • Pesan tersedia untuk dikonsumsi.

    <?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>        
  • Tidak ada pesan yang tersedia untuk dikonsumsi.

    <?xml version="1.0" ?>
    <Error xmlns="http://mq.aliyuncs.com/doc/v1">
      <Code>MessageNotExist</Code>
      <Message>Pesan tidak ada.</Message>
      <RequestId>5DAEE3FF463541AD6E0322EB</RequestId>
      <HostId>http://123.mqrest.cn-hangzhou.aliyuncs.com</HostId>
    </Error>