Menerima hingga 16 pesan dari sebuah Antrian dalam satu panggilan.
Setelah diterima, pesan tersebut memasuki status Inactive selama periode VisibilityTimeout Antrian. Hapus pesan tersebut dalam jendela waktu ini setelah diproses. Jika tidak, pesan akan kembali ke status Active dan tersedia untuk dikirim ulang.
Otorisasi
Secara default, hanya Akun Alibaba Cloud yang dapat memanggil operasi ini. Berikan izin yang diperlukan kepada Pengguna RAM sebelum mereka memanggil operasi ini. Untuk detailnya, lihat Kebijakan izin dan contoh.
| Properti | Nilai |
|---|---|
| API | BatchReceiveMessage |
| Action | mns:BatchReceiveMessage |
| Resource | acs:mns:$region:$accountid:/queues/$queueName/messages |
Cara kerja
Kirim permintaan
GETdengan parameternumOfMessagesuntuk menerima pesan dari Antrian.Pesan yang dikembalikan langsung memasuki status Inactive dan disembunyikan dari konsumen lain.
Proses setiap pesan, lalu panggil DeleteMessage dengan
ReceiptHandlepesan tersebut sebelumNextVisibleTime.Jika pesan tidak dihapus dalam periode
VisibilityTimeout, pesan tersebut akan kembali ke status Active dan dapat dikonsumsi lagi.
VisibilityTimeout dikonfigurasi pada tingkat Antrian melalui CreateQueue.
Permintaan
Baris permintaan
GET /queues/$queueName/messages?numOfMessages=16&waitseconds=10 HTTP/1.1Parameter URI
| Parameter | Tipe | Wajib | Contoh | Deskripsi |
|---|---|---|---|---|
| numOfMessages | Integer | Ya | 10 | Jumlah maksimum pesan yang akan diterima. |
| waitseconds | Integer | Tidak | 0 | Waktu tunggu long polling, dalam detik. Saat tidak ada pesan yang tersedia, permintaan akan ditahan hingga pesan tiba atau waktu tunggu habis. Nilai default mengikuti PollingWaitSeconds Antrian jika tidak ditentukan. Lihat CreateQueue. |
Perilaku long polling
Saat waitseconds diatur (atau nilai default PollingWaitSeconds Antrian berlaku), permintaan akan tetap terbuka hingga pesan tiba atau waktu tunggu habis. Pesan yang ditulis ke Antrian selama periode ini akan dikirimkan segera. Untuk informasi mengenai kedua mode polling tersebut, lihat Short polling dan long polling.
SMQ membatasi jumlah permintaan long polling konkuren berdasarkan jumlah permintaan, durasi tunggu, dan alamat IP klien. Jika batas ini terlampaui, SMQ langsung mengembalikan 404 MessageNotExist alih-alih menahan permintaan. Untuk menghindari biaya yang tidak perlu, kurangi jumlah permintaan long polling konkuren dan gunakan durasi tunggu yang sesuai. Untuk menaikkan batas tersebut, kirim Tiket.
Header permintaan
Tidak ada header khusus operasi.
Isi permintaan
Tidak ada.
Respons
Kode status HTTP
HTTP/1.1 200 OKHeader respons
Tidak ada header khusus operasi.
Badan respons
Badan respons berformat XML. Setiap elemen <Message> di dalam <Messages> berisi bidang-bidang berikut:
| Parameter | Tipe | Contoh | Deskripsi |
|---|---|---|---|
| MessageId | String | 5F290C926D472878-2-14D9529A8FA-20000\*\*\*\* | Pengidentifikasi unik pesan dalam Antrian. |
| ReceiptHandle | String | 1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== | Handle untuk menghapus atau memodifikasi pesan selama dalam status Inactive. Valid hingga NextVisibleTime. |
| MessageBody | String | This is test message 1. | Isi pesan. |
| MessageBodyMD5 | String | C5DD56A39F5F7BB8B3337C6D11B6\*\*\*\* | Hash MD5 dari isi pesan. |
| EnqueueTime | Long | 1250700979248 | Waktu pesan dikirim ke Antrian. Stempel waktu UNIX dalam milidetik. |
| NextVisibleTime | Long | 1250700799348 | Waktu pesan menjadi terlihat kembali. Stempel waktu UNIX dalam milidetik. |
| FirstDequeueTime | Long | 1250700779318 | Waktu pesan pertama kali dikonsumsi. Stempel waktu UNIX dalam milidetik. |
| DequeueCount | Integer | 1 | Jumlah total kali pesan telah dikonsumsi. |
Contoh
Contoh permintaan
GET /queues/$queueName/messages?numOfMessages=16 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****Contoh respons
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"?>
<Messages xmlns="http://mns.aliyuncs.com/doc/v1/">
<Message>
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA==</ReceiptHandle>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
<MessageBody>This is test message 1.</MessageBody>
<EnqueueTime>1250700979248</EnqueueTime>
<NextVisibleTime>1250700799348</NextVisibleTime>
<FirstDequeueTime>1250700779318</FirstDequeueTime>
<DequeueCount>1</DequeueCount>
<Priority>8</Priority>
</Message>
<Message>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3MjQwLTEtOA==</ReceiptHandle>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
<MessageBody>This is test message 2.</MessageBody>
<EnqueueTime>1250700979252</EnqueueTime>
<NextVisibleTime>1250700799350</NextVisibleTime>
<FirstDequeueTime>1250700779330</FirstDequeueTime>
<DequeueCount>1</DequeueCount>
<Priority>8</Priority>
</Message>
</Messages>Kode kesalahan
| Kode kesalahan | Pesan kesalahan | Kode status HTTP | Deskripsi |
|---|---|---|---|
| QueueNotExist | The queue name you provided is not exist. | 404 | Antrian yang ditentukan tidak ada. Buat Antrian terlebih dahulu. |
| MessageNotExist | Message not exist. | 404 | Tidak ada pesan yang terlihat dalam Antrian. Hal ini juga terjadi ketika batas long polling konkuren terlampaui. |