Reçoit un message d'une file d'attente et le définit comme Inactif pendant la durée de la période VisibilityTimeout de la file. Appelez DeleteMessage avant l'expiration de cette période pour supprimer définitivement le message. S'il n'est pas supprimé à temps, le message revient à l'état Actif et redevient disponible pour 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 Resource Access Management (RAM), accordez les autorisations requises à l'utilisateur RAM. Pour plus d'informations, consultez la rubrique Stratégies d'autorisation et exemples.
| Élément | Valeur |
|---|---|
| Opération API | ReceiveMessage |
| Action | mns:ReceiveMessage |
| Ressource | 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 aucun en-tête de requête ni corps de requête spécifique.
Paramètres URI
| Paramètre | Type | Obligatoire | Exemple | Description |
|---|---|---|---|---|
| waitseconds | Integer | Non | 0 | Temps d'attente maximal en secondes lorsqu'aucun message n'est disponible. Si omis, la valeur PollingWaitSeconds de la file d'attente s'applique. Pour plus d'informations, consultez la rubrique CreateQueue. |
Comportement du long polling
Lorsque waitseconds est défini (ou lorsque la valeur par défaut PollingWaitSeconds de la file d'attente s'applique), le serveur maintient la connexion jusqu'à l'arrivée d'un message ou l'expiration de la période d'attente. Tout message écrit dans la file d'attente durant cette période est immédiatement transmis.
Nous vous recommandons de réduire le nombre de requêtes de long polling simultanées et de spécifier une période d'attente appropriée. Pour plus d'informations, consultez la rubrique Short polling et long polling.
Simple Message Queue (SMQ, anciennement MNS) limite les requêtes de long polling 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 pour supprimer ou modifier le message lorsqu'il est Inactif
Horodatages : heure de mise en file d'attente, heure de première extraction et heure de prochaine visibilité
Un nombre d'extractions
| 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 lorsqu'il est Inactif. Utilisez cette valeur lors de l'appel à DeleteMessage ou à ChangeMessageVisibility. Valide jusqu'à 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 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