Partager via


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 codage UTF-8, et la taille du message codé peut aller jusqu’à 64 Ko. Cette opération a été introduite avec la version 2011-08-18 de l’API Stockage de 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 la requête 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 de file d’attente sous la forme 127.0.0.1:10001, suivis du nom du compte de stockage émulé.

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

Paramètres d’URI

Vous pouvez spécifier les paramètres suivants sur l’URI de la demande.

Paramètre Descriptif
popreceipt Obligatoire. Spécifie la valeur d’accusé de réception pop valide renvoyée par un appel précédent aux opérations Obtenir des messages ou Mettre à jour un message . Ils popreceipt doivent être encodés en URL.
visibilitytimeout Obligatoire. Spécifie la nouvelle valeur du délai d’expiration de la visibilité, en secondes, par rapport à l’heure du serveur. La nouvelle valeur doit être supérieure ou égale à 0 et ne peut pas être supérieure à 7 jours. Le délai d’expiration de la visibilité d’un message ne peut pas être défini sur une valeur ultérieure à la date d’expiration. Vous pouvez mettre à jour un message jusqu’à ce qu’il ait été supprimé ou qu’il ait expiré.
timeout Optional. Le timeout paramètre est exprimé en secondes. Pour plus d’informations, consultez Définition des délais d’expiration pour les opérations de stockage en file d’attente.

En-têtes de requête

Le tableau suivant décrit les en-têtes de requête obligatoires et facultatifs.

En-tête de requête Descriptif
Authorization Obligatoire. Spécifie le schéma d’autorisation, le nom du compte et la signature. Pour plus d’informations, consultez Autoriser les demandes à Stockage Azure.
Date or x-ms-date Obligatoire. Spécifie le temps universel coordonné (UTC) de la demande. Pour plus d’informations, consultez Autoriser les demandes à Stockage Azure.
x-ms-version Nécessite le 2011-08-18 ou une version 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 Optional. Fournit une valeur opaque générée par le client avec une limite de caractères de 1 kibiooctet (Kio) qui est enregistrée dans les journaux lors de la configuration de la journalisation. Nous vous recommandons vivement d’utiliser cet en-tête pour corréler les activités côté client avec les demandes que le serveur reçoit. Pour plus d’informations, consultez Surveiller le stockage de file d’attente Azure.

Corps de la requête

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>  

Réponse

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

Code de statut

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

En-têtes de réponse

La réponse de cette opération comprend 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 Descriptif
x-ms-request-id Cet en-tête identifie de manière unique la demande qui a été effectuée et peut être utilisé pour résoudre le problème 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 de file d’attente utilisée pour exécuter la demande. Cet en-tête est renvoyé pour les demandes effectuées sur la version 2009-09-19 et les versions ultérieures.
Date Valeur de date/heure UTC qui indique l’heure à laquelle la réponse a été initiée. Le service génère cette valeur.
x-ms-popreceipt Réception pop du message de file d’attente.
x-ms-time-next-visible Valeur de date/heure UTC qui indique le moment où 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 d’au plus 1 024 caractères ASCII visibles. Si l’en-tête x-ms-client-request-id n’est pas présent dans la requête, cet en-tête ne sera pas présent dans la réponse.

Corps de réponse

Aucun.

Authorization

Le propriétaire du compte peut effectuer cette opération. De plus, toute personne disposant d’une signature d’accès partagé et disposant de l’autorisation d’effectuer cette opération peut le faire.

Exemple de demande 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 requête 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  

Remarques

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

Un accusé de réception de pop est renvoyé par l’opération Get Messages ou l’opération Update Message . Les reçus de boissons gazeuses demeurent valides jusqu’à ce que l’un des événements suivants se produise :

  • Le message a expiré.

  • Le message a été supprimé à l’aide du dernier accusé de réception de la page pop, soit de Get Messages ou Update Message.

  • Le temps d’invisibilité est écoulé et le message a été retiré de la file d’attente par une Get Messages demande. Une fois le temps d’invisibilité écoulé, le message redevient visible. S’il est récupéré par une autre Get Messages demande, l’accusé de réception pop renvoyé 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 nouveau reçu pop sera retourné.

Vous pouvez utiliser l’opération Update Message pour étendre en permanence 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 Get Messages et reconnaît qu’il a besoin de plus de temps pour traiter un message, il peut continuellement étendre l’invisibilité du message jusqu’à ce qu’il soit traité. Si le rôle de travail devait échouer pendant le traitement, le message finirait par redevenir visible et un autre rôle de travail pourrait le traiter.

Un message doit être dans un format qui peut être inclus dans une requête XML avec un codage UTF-8. Pour inclure le balisage dans le message, le contenu du message doit être encodé en Base64. Tout balisage XML dans le message qui n’est pas codé entraînera l’invalidité du message. Si un caractère non valide (par exemple 0x1F) est inclus dans le message, même s’il est échappé XML, les lectures suivantes du message échouent.

Si le message est trop volumineux, le service renvoie le code d’état 400 (Bad Request).

Voir aussi

Autoriser les demandes à Azure Storage
Codes d’état et d’erreur
Codes d’erreur de stockage de file d’attente