Menerima sebuah pesan dari antrian dan mengaturnya ke status Inactive selama periode VisibilityTimeout antrian tersebut. Panggil DeleteMessage sebelum periode ini berakhir untuk menghapus pesan secara permanen. Jika tidak dihapus tepat waktu, pesan akan kembali ke status Active dan tersedia untuk dikonsumsi lagi.
Informasi otorisasi
Secara default, hanya Akun Alibaba Cloud yang dapat memanggil operasi ini. Untuk memanggilnya sebagai Pengguna Resource Access Management (RAM), berikan izin yang diperlukan kepada pengguna RAM tersebut. Untuk informasi selengkapnya, lihat Kebijakan dan contoh izin.
| Item | Nilai |
|---|---|
| Operasi API | ReceiveMessage |
| Action | mns:ReceiveMessage |
| Resource | acs:mns:$region:$accountid:/queues/$queueName/messages |
Sintaksis permintaan
GET /queues/$queueName/messages?waitseconds=10 HTTP/1.1Operasi ini tidak memiliki header permintaan atau badan permintaan khusus operasi.
Parameter URI
| Parameter | Tipe | Wajib | Contoh | Deskripsi |
|---|---|---|---|---|
| waitseconds | Integer | Tidak | 0 | Waktu tunggu maksimum dalam detik ketika tidak ada pesan yang tersedia. Jika diabaikan, nilai PollingWaitSeconds antrian akan digunakan. Untuk informasi selengkapnya, lihat CreateQueue. |
Perilaku long polling
Ketika parameter waitseconds diatur (atau nilai default PollingWaitSeconds antrian diterapkan), server akan menahan koneksi hingga pesan tiba atau periode tunggu berakhir. Setiap pesan yang ditulis ke antrian selama periode ini akan segera dikirimkan.
Kami menyarankan Anda membatasi jumlah permintaan long polling bersamaan dan menentukan periode tunggu yang sesuai. Untuk informasi selengkapnya, lihat Short polling dan long polling.
Simple Message Queue (SMQ, sebelumnya MNS) membatasi jumlah permintaan long polling bersamaan berdasarkan total jumlah permintaan, periode tunggu, dan alamat IP sumber. Jika batas ini terlampaui, SMQ langsung mengembalikan error 404 MessageNotExist tanpa menahan permintaan, dan biaya permintaan standar tetap berlaku. Untuk menaikkan batas ini, kirim tiket.
Respons
Kode status HTTP
HTTP/1.1 200 OKOperasi ini tidak memiliki header respons khusus operasi.
Badan respons
Badan respons dalam format XML dan berisi:
Isi pesan dan hash MD5-nya
ID pesan unik
Receipt handle untuk menghapus atau mengubah pesan selama dalam status Inactive
Stempel waktu: waktu enqueue, waktu dequeue pertama, dan waktu visibilitas berikutnya
Jumlah dequeue
| Parameter | Tipe | Contoh | Deskripsi |
|---|---|---|---|
| MessageId | String | 5F290C926D472878-2-14D9529A8FA-20000\*\*\*\* | Pengidentifikasi unik pesan dalam antrian. |
| ReceiptHandle | String | 1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== | Handle untuk menghapus atau mengubah pesan selama dalam status Inactive. Gunakan nilai ini saat memanggil DeleteMessage atau ChangeMessageVisibility. Berlaku hingga NextVisibleTime. |
| MessageBody | String | This is a test message | Isi pesan. |
| MessageBodyMD5 | String | C5DD56A39F5F7BB8B3337C6D11B6\*\*\*\* | Hash MD5 dari isi pesan. |
| EnqueueTime | Long | 1250700979248 | Waktu pesan dikirim ke antrian. Stempel waktu UNIX dalam milidetik sejak 1 Januari 1970 pukul 00:00:00 UTC. |
| NextVisibleTime | Long | 1250700799348 | Waktu pesan menjadi terlihat kembali jika tidak dihapus. Stempel waktu UNIX dalam milidetik sejak 1 Januari 1970 pukul 00:00:00 UTC. |
| FirstDequeueTime | Long | 1250700779318 | Waktu pesan pertama kali dikonsumsi. Stempel waktu UNIX dalam milidetik sejak 1 Januari 1970 pukul 00:00:00 UTC. |
| DequeueCount | Integer | 1 | Jumlah kali pesan telah dikonsumsi. |
Contoh
Permintaan contoh
GET /queues/$queueName/messages 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****Respons contoh
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"?>
<Message xmlns="http://mns.aliyuncs.com/doc/v1/">
<MessageId>5F290C926D472878-2-14D9529A8FA-20000****</MessageId>
<ReceiptHandle>1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA==</ReceiptHandle>
<MessageBodyMD5>C5DD56A39F5F7BB8B3337C6D11B6****</MessageBodyMD5>
<MessageBody>This is a test message</MessageBody>
<EnqueueTime>1250700979248</EnqueueTime>
<NextVisibleTime>1250700799348</NextVisibleTime>
<FirstDequeueTime>1250700779318</FirstDequeueTime>
<DequeueCount>1</DequeueCount>
<Priority>8</Priority>
</Message>Kode error
| Kode error | Pesan error | Kode status HTTP | Deskripsi |
|---|---|---|---|
| QueueNotExist | The queue name you provided is not exist. | 404 | Antrian yang ditentukan tidak ada. Buat antrian sebelum memanggil operasi ini. |
| MessageNotExist | Message not exist. | 404 | Tidak ada pesan yang terlihat dalam antrian. |
Langkah selanjutnya
Menerima beberapa pesan dalam satu panggilan: BatchReceiveMessage
Menghapus pesan yang telah dikonsumsi: DeleteMessage
Mengonfigurasi atribut antrian seperti
VisibilityTimeoutdanPollingWaitSeconds: CreateQueue