Consulte un message dans une file d'attente sans modifier son état.
Description
L'opération PeekMessage récupère un message de la file d'attente spécifiée à des fins d'inspection uniquement. Contrairement à l'opération ReceiveMessage, cette action ne modifie pas l'état du message : celui-ci reste dans l'état Active et demeure disponible pour les autres consommateurs.
Pour chaque message renvoyé, la réponse inclut les éléments suivants :
Le corps du message et son hachage MD5
L'ID du message, unique au sein de la file d'attente
La priorité du message
L'horodatage de mise en file d'attente
L'horodatage de la première extraction et le nombre total d'extractions
PeekMessage ne renvoie pas de ReceiptHandle . Sans cet identifiant de réception, vous ne pouvez ni supprimer le message ni modifier son délai de visibilité. Pour consommer et retirer un message de la file d'attente, utilisez plutôt l'opération ReceiveMessage .
Différences entre PeekMessage et ReceiveMessage
| Comportement | PeekMessage | ReceiveMessage |
|---|---|---|
| État du message après l'appel | Reste Active | Passe à Inactive |
| Visibilité pour les autres consommateurs | Toujours visible | Masqué pendant la durée définie par VisibilityTimeout |
ReceiptHandle dans la réponse |
Non | Oui |
| Possibilité de supprimer le message après l'appel | Non | Oui (avec ReceiptHandle) |
Autorisation
Par défaut, seuls les comptes Alibaba Cloud peuvent appeler cette opération. Les utilisateurs RAM doivent disposer des autorisations requises. Pour plus d'informations, consultez la section Stratégies et exemples d'autorisations.
| Élément | Valeur |
|---|---|
| Opération API | PeekMessage |
| Action | mns:PeekMessage |
| Ressource | acs:mns:$region:$accountid:/queues/$queueName/messages |
Syntaxe de la requête
GET /queues/$queueName/messages?peekonly=true HTTP/1.1
Paramètres d'URI
| Paramètre | Obligatoire | Description |
|---|---|---|
peekonly |
Oui | Doit être défini sur true. Permet de consulter le message sans modifier son état. |
En-têtes de requête
Aucun en-tête spécifique à cette opération n'est requis. Seuls les en-têtes de requête communs sont nécessaires.
Corps de la requête
Aucun.
Réponse
Code d'état HTTP
Une requête réussie renvoie le code HTTP/1.1 200 OK.
En-têtes de réponse
Aucun en-tête spécifique à cette opération n'est renvoyé. Seuls les en-têtes de réponse communs sont inclus.
Corps de la réponse
Le corps de la réponse est au format XML et contient les éléments suivants :
| Paramètre | Type | Exemple | Description |
|---|---|---|---|
| MessageId | String | D6D5F7C9C12D14A4-1-14D953EFC72-20000**** |
ID unique du message au sein de la file d'attente. |
| MessageBody | String | This is a test message. |
Corps du message. |
| MessageBodyMD5 | String | F9360F391579E71CA77BC5D50242**** |
Hachage MD5 du corps du message. |
| EnqueueTime | Long | 1250700979248 |
Horodatage d'envoi du message dans la file d'attente. Il s'agit d'un horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC. |
| FirstDequeueTime | Long | 1250700979348 |
Horodatage de la première extraction du message. Il s'agit d'un horodatage UNIX en millisecondes depuis le 1er janvier 1970, 00:00:00 UTC. Si la valeur de DequeueCount est 0, cette valeur est identique à celle de EnqueueTime. |
| DequeueCount | Integer | 5 |
Nombre total d'extractions du message. |
| Priority | Integer | 8 |
Priorité du message. |
Contrairement à ReceiveMessage, la réponse de PeekMessage n'inclut pas d'élément ReceiptHandle .
Exemples
Exemple de requête
GET /queues/$queueName/messages?peekonly=true 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
Connection: close
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>D6D5F7C9C12D14A4-1-14D953EFC72-20000****</MessageId>
<MessageBodyMD5>F9360F391579E71CA77BC5D50242****</MessageBodyMD5>
<MessageBody>This is a test message.</MessageBody>
<EnqueueTime>1250700979248</EnqueueTime>
<FirstDequeueTime>1250700979348</FirstDequeueTime>
<DequeueCount>5</DequeueCount>
<Priority>8</Priority>
</Message>
Codes d'erreur
Le tableau suivant répertorie les codes d'erreur spécifiques à cette opération. Pour les codes d'erreur communs, consultez la section Réponses d'erreur.
| Code d'erreur | Code d'état HTTP | Message d'erreur | Description |
|---|---|---|---|
| QueueNotExist | 404 | The queue name you provided is not exist. | La file d'attente spécifiée n'existe pas. Vérifiez le nom de la file d'attente et la région, ou créez la file d'attente au préalable. |
| MessageNotExist | 404 | Message not exist. | Aucun message n'est disponible pour consultation. La file d'attente est vide ou tous les messages sont dans l'état Inactive (consommés mais pas encore supprimés). |