Reçoit un message d'une file d'attente et le place à l'état Inactif pendant la durée définie par le paramètre VisibilityTimeout de la file. Appelez l'opération DeleteMessage avant l'expiration de cette période pour supprimer définitivement le message. Si le message n'est pas supprimé à temps, il revient à l'état Actif et redevient disponible pour la consommation.
Informations sur l'autorisation
Par défaut, seul un compte Alibaba Cloud peut appeler cette opération. Pour l'appeler en tant qu'utilisateur RAM (Resource Access Management), accordez les autorisations requises à l'utilisateur RAM. Pour plus d'informations, consultez la rubrique Politiques d'autorisation et exemples.
| Élément | Valeur |
|---|---|
| Opération API | ReceiveMessage |
| Action | mns:ReceiveMessage |
| Resource | acs:mns:$region:$accountid:/queues/$queueName/messages |
Syntaxe de la requête
GET /queues/$queueName/messages?waitseconds=10 HTTP/1.1
Cette opération ne comporte ni en-têtes de requête spécifiques ni corps de requête spécifique.
Paramètres URI
| Paramètre | Type | Obligatoire | Exemple | Description |
|---|---|---|---|---|
| waitseconds | Integer | Non | 0 | Durée d'attente maximale en secondes lorsqu'aucun message n'est disponible. Si ce paramètre est omis, la valeur du paramètre PollingWaitSeconds de la file d'attente s'applique. Pour plus d'informations, 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 s'applique), le serveur maintient la connexion ouverte jusqu'à l'arrivée d'un message ou l'expiration de la période d'attente. Tout message écrit dans la file durant cette période est immédiatement transmis.
Nous vous recommandons de réduire le nombre de requêtes de sondage long simultanées et de spécifier une période d'attente appropriée. Pour plus d'informations, consultez la rubrique Sondage court et sondage long.
Simple Message Queue (SMQ, anciennement MNS) limite le nombre de requêtes de sondage long simultanées en fonction du nombre total de requêtes, des périodes d'attente et des adresses IP source. Lorsque cette limite est dépassée, SMQ renvoie immédiatement une erreur 404 MessageNotExist sans maintenir la requête, et les frais de requête standard s'appliquent. Pour augmenter cette limite, soumettez un ticket.
Réponse
Code d'état HTTP
HTTP/1.1 200 OK
Cette opération ne comporte aucun en-tête de réponse spécifique.
Corps de la réponse
Le corps de la réponse est au format XML et contient :
Le corps du message et son hachage MD5
Un ID de message unique
Un handle de réception (ReceiptHandle) pour supprimer ou modifier le message tant qu'il est à l'état Inactif
Des horodatages : heure de mise en file, heure de première extraction et heure de prochaine visibilité
Un compteur d'extraction (DequeueCount)
| 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 Inactif. Utilisez cette valeur lors de l'appel aux opérations DeleteMessage ou ChangeMessageVisibility. Valide jusqu'à l'heure indiquée par le paramètre NextVisibleTime. |
| MessageBody | String | This is a test message | Contenu du message. |
| MessageBodyMD5 | String | C5DD56A39F5F7BB8B3337C6D11B6\\\\ | Hachage MD5 du corps du message. |
| EnqueueTime | Long | 1250700979248 | Heure d'envoi du message dans la file d'attente. Horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC. |
| NextVisibleTime | Long | 1250700799348 | Heure à laquelle le message redevient visible s'il n'est pas supprimé. Horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC. |
| FirstDequeueTime | Long | 1250700779318 | Heure de la première consommation du message. Horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC. |
| DequeueCount | Integer | 1 | Nombre de fois où le message a été consommé. |
Exemples
Exemple de requête
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****
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"?>
<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>
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 une file d'attente avant d'appeler cette opération. |
| MessageNotExist | Message not exist. | 404 | Aucun message visible n'existe dans la file d'attente. |
Étapes suivantes
Recevez plusieurs messages en un seul appel : BatchReceiveMessage
Supprimez un message consommé : DeleteMessage
Configurez les attributs de la file d'attente, tels que
VisibilityTimeoutetPollingWaitSeconds: CreateQueue