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.1PentingTotal 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.
CatatanJika 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 200Badan 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.
CatatanJika 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 404Badan Respons
Tabel berikut menjelaskan parameter dalam badan respons:
Parameter
Tipe
Deskripsi
Code
String
Kode kesalahan.
MessageNotExistmenunjukkan 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>