Verrouillage temporaire de message (lecture non destructrice)

Cette opération récupère et verrouille atomiquement un message d'une file d'attente ou d'un abonnement pour traitement. Vous avez la garantie que le message n'est pas remis à d'autres récepteurs (de la même file d'attente ou du même abonnement uniquement) durant la durée de verrouillage spécifiée dans la description de la file d'attente/l'abonnement. Après expiration du verrouillage, le message est disponible pour les autres récepteurs. Afin de terminer le traitement du message, le récepteur doit émettre une commande de suppression avec l'ID de verrouillage reçu de cette opération. Pour abandonner le traitement du message et le déverrouiller pour d’autres récepteurs, une commande Déverrouiller le message doit être émise, sinon la durée du verrouillage peut expirer.

Cette opération doit être utilisée dans les applications qui nécessitent des assurances de livraison Une fois au minimum. Si le destinataire ne supprime pas le message avant que le traitement ne réussisse, cette opération garantit qu’un autre destinataire peut tenter de le traiter après l’expiration de la période de durée de verrouillage.

Requête

Méthode URI de demande Version HTTP
POST http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath}/messages/head

or

http{s}://{serviceNamespace}.servicebus.windows.net/{topicPath}/subscriptions/{subscriptionName}/messages/head|HTTP/1.1

En-têtes de requête

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs. Outre les propriétés répertoriées, l'en-tête peut contenir des propriétés personnalisées. Consultez l'exemple.

En-tête de requête Description
Autorisation Spécifiez l’une des valeurs de jeton suivantes :

Corps de la requête

Aucun.

response

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

Codes de réponse

Code Description
201 Message correctement récupéré et verrouillé.
204 Aucun message disponible dans le délai d'expiration spécifié.
400 Demande incorrecte.
401 Échec de l'autorisation.
410 La file d'attente ou l'abonnement spécifié n'existe pas.
500 Erreur interne.

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 aussi 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 réponse Description
Content-Type Défini sur application/atom+xml;type=entry;charset=utf-8.
Location URI du message verrouillé. Vous pouvez utiliser cet URI pour déverrouiller ou supprimer le message.
BrokerProperties Encodé BrokerProperties au format JSON du message reçu. La LockToken propriété représente l’ID de verrou du message retourné. La SequenceNumber propriété représente le numéro de séquence du message retourné.

Corps de la réponse

Le corps de la réponse est le corps du message récupéré.

Exemple

La requête HTTP suivante verrouille et renvoie un message d'une file d'attente :

POST https://your-namespace.servicebus.windows.net/HttpClientSampleQueue/messages/head?timeout=60 HTTP/1.1  
Authorization: SharedAccessSignature sr=your-namespace&sig=Fg8yUyR4MOmXfHfj55f5hY4jGb8x2Yc%2b3%2fULKZYxKZk%3d&se=1404256819&skn=RootManageSharedAccessKey  
Host: your-namespace.servicebus.windows.net  
Content-Length: 0  

Service Bus retourne la réponse suivante. Le message contient les propriétés personnalisées Priority et Customer :

HTTP/1.1 201 Created  
Transfer-Encoding: chunked  
Content-Type: application/atom+xml;type=entry;charset=utf-8  
Location: https://your-namespace.servicebus.windows.net/httpclientsamplequeue/messages/2/7da9cfd5-40d5-4bb1-8d64-ec5a52e1c547  
Server: Microsoft-HTTPAPI/2.0  
BrokerProperties: {"DeliveryCount":1,"EnqueuedSequenceNumber":0,"EnqueuedTimeUtc":"Wed, 02 Jul 2014 01:32:27 GMT","Label":"M1","LockToken":"7da9cfd5-40d5-4bb1-8d64-ec5a52e1c547","LockedUntilUtc":"Wed, 02 Jul 2014 01:33:27 GMT","MessageId":"31907572164743c38741631acd554d6f","SequenceNumber":2,"State":"Active","TimeToLive":10}  
Priority: "High"  
Customer: "12345,ABC"  
Date: Wed, 02 Jul 2014 01:32:27 GMT  
  
12  
This is a message.  
0  

Voir aussi

Exemple de client HTTP Service Bus