Mise à jour de message

L'opération Update Message met à jour le délai d'expiration de la visibilité d'un message. Vous pouvez également utiliser cette opération pour mettre à jour le contenu d'un message. Un message doit être dans un format qui peut être inclus dans une requête XML avec un encodage UTF-8, et le message encodé peut avoir une taille maximale de 64 Ko. Cette opération a été introduite avec la version 2011-08-18 de l’API Stockage File d’attente Azure.

Requête

Vous pouvez construire la Update Message requête comme suit. HTTPS est recommandé. Remplacez myaccount par le nom de votre compte de stockage et myqueue par le nom de votre file d’attente.

Méthode URI de demande Version HTTP
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Service de stockage émulé

Cette opération est prise en charge pour le SDK 1.6 et les versions ultérieures.

Lorsque vous effectuez une demande auprès du service de stockage émulé, spécifiez le nom d’hôte de l’émulateur et le port de stockage file d’attente comme 127.0.0.1:10001, suivis du nom du compte de stockage émulé.

Méthode URI de demande Version HTTP
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Paramètres URI

Vous pouvez spécifier les paramètres suivants sur l’URI de requête.

Paramètre Description
popreceipt Obligatoire. Spécifie la valeur de réception contextuelle valide retournée à partir d’un appel antérieur aux opérations Obtenir des messages ou Mettre à jour un message . Doit popreceipt être encodé en URL.
visibilitytimeout Obligatoire. Spécifie la nouvelle valeur du délai de visibilité, en secondes, par rapport au temps serveur. La nouvelle valeur doit être supérieure ou égale à 0 et ne peut pas être supérieure à 7 jours. Le délai de visibilité d’un message ne peut pas être défini sur une valeur postérieure à l’heure d’expiration. Vous pouvez mettre à jour un message jusqu’à ce qu’il ait été supprimé ou qu’il ait expiré.
timeout Optionnel. Le paramètre timeout est exprimé en secondes. Pour plus d’informations, consultez Définition des délais d’expiration pour les opérations de stockage file d’attente.

En-têtes de requête

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.

En-tête de requête Description
Authorization Obligatoire. Spécifie le schéma d’autorisation, le nom du compte et la signature. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
Date or x-ms-date Obligatoire. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
x-ms-version Nécessite la version 2011-08-18 ou ultérieure. Spécifie la version de l'opération à utiliser pour cette demande. Pour plus d'informations, consultez la page Contrôle de version pour les services de Stockage Microsoft Azure.
x-ms-client-request-id Optionnel. Fournit une valeur opaque générée par le client avec une limite de caractères de 1 kibioctet (Kio) enregistrée dans les journaux lors de la configuration de la journalisation. Nous vous recommandons vivement d’utiliser cet en-tête pour mettre en corrélation les activités côté client avec les demandes que le serveur reçoit. Pour plus d’informations, consultez Surveiller le stockage File d’attente Azure.

Corps de la demande

Le corps de la demande contient les données du message au format XML suivant. Notez que le contenu du message doit être dans un format qui peut être encodé avec UTF-8.

<QueueMessage>  
    <MessageText>message-content</MessageText>  
</QueueMessage>  

response

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.

Code d’état

Une opération réussie renvoie le code d'état 204 (Aucun contenu). Pour plus d’informations sur les codes status, consultez Codes d’état et d’erreur.

En-têtes de réponse

La réponse de l'opération inclut les en-têtes suivants. La réponse peut également inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.

En-tête de requête Description
x-ms-request-id Cet en-tête identifie de manière unique la requête qui a été effectuée et peut être utilisé pour la résolution des problèmes de la demande. Pour plus d’informations, consultez Résolution des problèmes liés aux opérations d’API.
x-ms-version Indique la version du stockage file d’attente utilisée pour exécuter la requête. Cet en-tête est renvoyé pour les demandes effectuées avec la version 2009-09-19 ou une version ultérieure.
Date Valeur de date/heure UTC qui indique l’heure à laquelle la réponse a été lancée. Le service génère cette valeur.
x-ms-popreceipt L'accusé de réception pop du message de la file d'attente.
x-ms-time-next-visible Une valeur date/d'heure UTC qui indique quand le message sera visible dans la file d'attente.
x-ms-client-request-id Vous pouvez utiliser cet en-tête pour résoudre les problèmes liés aux demandes et aux réponses correspondantes. La valeur de cet en-tête est égale à la valeur de l’en-tête x-ms-client-request-id , s’il est présent dans la requête. La valeur est au maximum de 1 024 caractères ASCII visibles. Si l’en-tête x-ms-client-request-id n’est pas présent dans la demande, cet en-tête ne sera pas présent dans la réponse.

Response body

Aucun.

Autorisation

Le propriétaire du compte peut effectuer cette opération. En outre, toute personne disposant d’une signature d’accès partagé et autorisée à effectuer cette opération peut le faire.

Exemple de requête et de réponse

La demande suivante étend la visibilité d'un message de file d'attente de 30 secondes et met à jour son contenu.

PUT https://myaccount.queue.core.windows.net/myqueue/messages/663d89aa-d1d9-42a2-9a6a-fcf822a97d2c?popreceipt=AgAAAAEAAAApAAAAGIw6Q29bzAE%3d&visibilitytimeout=30&timeout=30 HTTP/1.1  
  

La demande est envoyée avec les en-têtes suivants :

x-ms-version: 2011-08-18  
x-ms-date: Mon, 29 Aug 2011 17:17:21 GMT  
Authorization: SharedKey myaccount:batcrWZ35InGCZeTUFWMdIQiOZPCW7UEyeGdDOg7WW4=  
Content-Length: 75  

La demande est envoyée avec le corps XML suivant :

<QueueMessage>  
    <MessageText>new-message-content</MessageText>  
</QueueMessage>  

Une fois la demande envoyée, la réponse suivante est renvoyée :

HTTP/1.1 204 No Content  
Content-Length: 0  
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: df34a7dd-3cbe-4206-a586-d6de3cf225a7  
x-ms-version: 2011-08-18  
x-ms-popreceipt: AwAAAAIAAAApAAAAINtMQ29bzAEBAAAA  
x-ms-time-next-visible: Mon, 29 Aug 2011 17:17:51 GMT  
Date: Mon, 29 Aug 2011 17:17:21 GMT  

Notes

Une Update Message opération échoue si le message spécifié n’existe pas dans la file d’attente, ou si la réception contextuelle spécifiée ne correspond pas au message.

Un accusé de réception pop est renvoyé par l'opération Get Messages ou par l'opération Update Message. Les accusés de réception pop restent valides jusqu'à ce que l'un des événements suivants se produise :

  • Le message expire.

  • Le message a été supprimé à l’aide du dernier reçu contextuel reçu, à partir de Get Messages ou Update Message.

  • La durée d'invisibilité est passée et le message a été dépilé par une demande Get Messages. Lorsque la durée d'invisibilité est passée, le message est de nouveau visible. S’il est récupéré par une autre Get Messages demande, le reçu contextuel retourné peut être utilisé pour supprimer ou mettre à jour le message.

  • Le message a été mis à jour avec un nouveau délai de visibilité. Lorsque le message est mis à jour, un nouvel accusé de réception pop est renvoyé.

Vous pouvez utiliser l’opération Update Message pour étendre continuellement l’invisibilité d’un message de file d’attente. Cette fonctionnalité peut être utile si vous souhaitez qu’un rôle de travail loue un message de file d’attente. Par exemple, si un rôle de travail appelle Obtenir des messages et reconnaît qu’il a besoin de plus de temps pour traiter un message, il peut étendre continuellement l’invisibilité du message jusqu’à ce qu’il soit traité. Si le rôle de travail échoue pendant le traitement, le message redevient visible à nouveau et un autre rôle de travail peut le traiter.

Voir aussi

Autoriser les demandes dans le Stockage Azure
Codes d’état et d’erreur
Codes d’erreur de stockage de file d’attente