Reçoit jusqu'à 16 messages d'une file d'attente en un seul appel.
Une fois reçus, les messages passent à l'état Inactive pendant la durée définie par le paramètre VisibilityTimeout de la file d'attente. Supprimez les messages dans ce délai après leur traitement. À défaut, ils repassent à l'état Active et peuvent être redistribués.
Autorisation
Par défaut, seuls les comptes Alibaba Cloud peuvent appeler cette opération. Accordez les autorisations requises aux utilisateurs RAM avant qu'ils n'appellent cette opération. Pour plus de détails, consultez la rubrique Politiques et exemples d'autorisation.
| Propriété | Valeur |
|---|---|
| API | BatchReceiveMessage |
| Action | mns:BatchReceiveMessage |
| Resource | acs:mns:$region:$accountid:/queues/$queueName/messages |
Fonctionnement
Envoyez une requête
GETavec le paramètrenumOfMessagespour recevoir des messages depuis une file d'attente.Les messages renvoyés passent immédiatement à l'état Inactive et sont masqués pour les autres consommateurs.
Traitez chaque message, puis appelez l'opération DeleteMessage en utilisant le
ReceiptHandledu message avant l'échéanceNextVisibleTime.Si vous ne supprimez pas un message dans le délai imparti par
VisibilityTimeout, il repasse à l'état Active et peut être consommé à nouveau.
Le paramètre VisibilityTimeout est configuré au niveau de la file d'attente via l'opération CreateQueue.
Requête
Ligne de requête
GET /queues/$queueName/messages?numOfMessages=16&waitseconds=10 HTTP/1.1
Paramètres URI
| Paramètre | Type | Obligatoire | Exemple | Description |
|---|---|---|---|---|
| numOfMessages | Integer | Oui | 10 | Nombre maximal de messages à recevoir. |
| waitseconds | Integer | Non | 0 | Temps d'attente pour le sondage long (long polling), en secondes. Lorsqu'aucun message n'est disponible, la requête reste en attente jusqu'à l'arrivée d'un message ou l'expiration du délai. La valeur par défaut correspond au paramètre PollingWaitSeconds de la file d'attente si ce paramètre est omis. Consultez la rubrique CreateQueue. |
Comportement du sondage long (Long Polling)
Lorsque le paramètre waitseconds est défini (ou lorsque la valeur par défaut PollingWaitSeconds de la file d'attente s'applique), la requête reste ouverte jusqu'à l'arrivée d'un message ou l'expiration du délai d'attente. Les messages écrits dans la file d'attente durant cette période sont livrés immédiatement. Pour en savoir plus sur les deux modes de sondage, consultez la rubrique Sondage court et sondage long.
SMQ limite les requêtes de sondage long concurrentes en fonction du nombre de requêtes, de la durée d'attente et des adresses IP client. Lorsque cette limite est dépassée, SMQ renvoie immédiatement l'erreur 404 MessageNotExist au lieu de maintenir la requête en attente. Pour éviter des frais inutiles, réduisez le nombre de requêtes de sondage long concurrentes et utilisez une durée d'attente appropriée. Pour augmenter cette limite, soumettez un ticket.
En-têtes de requête
Aucun en-tête spécifique à l'opération.
Corps de la requête
Aucun.
Réponse
Code d'état HTTP
HTTP/1.1 200 OK
En-têtes de réponse
Aucun en-tête spécifique à l'opération.
Corps de la réponse
Le corps de la réponse est au format XML. Chaque élément <Message> inclus dans <Messages> contient les champs suivants :
| Paramètre | Type | Exemple | Description |
|---|---|---|---|
| MessageId | String | 5F290C926D472878-2-14D9529A8FA-20000\\\\ | Identifiant unique du message au sein de la file d'attente. |
| ReceiptHandle | String | 1-ODU4OTkzNDU5My0xNDMyNzI3ODI3LTItOA== | Handle permettant de supprimer ou de modifier le message tant qu'il est à l'état Inactive. Valide jusqu'à NextVisibleTime. |
| MessageBody | String | This is test message 1. | Contenu du message. |
| MessageBodyMD5 | String | C5DD56A39F5F7BB8B3337C6D11B6\\\\ | Hachage MD5 du corps du message. |
| EnqueueTime | Long | 1250700979248 | Horodatage d'envoi du message dans la file d'attente. Horodatage UNIX en millisecondes. |
| NextVisibleTime | Long | 1250700799348 | Moment où le message redevient visible. Horodatage UNIX en millisecondes. |
| FirstDequeueTime | Long | 1250700779318 | Moment de la première consommation du message. Horodatage UNIX en millisecondes. |
| DequeueCount | Integer | 1 | Nombre total de fois où le message a été consommé. |
Exemples
Exemple de requête
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****
Exemple de réponse
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>
Codes d'erreur
| Code d'erreur | Message d'erreur | Code d'état HTTP | Description |
|---|---|---|---|
| QueueNotExist | The queue name you provided is not exist. | 404 | La file d'attente spécifiée n'existe pas. Créez d'abord la file d'attente. |
| MessageNotExist | Message not exist. | 404 | Aucun message visible dans la file d'attente. Cette erreur survient également lorsque la limite de requêtes de sondage long concurrentes est dépassée. |