Condividi tramite


messaggio Peek-Lock (lettura non distruttiva)

Questa operazione recupera e blocca in modo atomico un messaggio da una coda o una sottoscrizione per l'elaborazione. Il messaggio non deve essere recapitato ad altri ricevitori (solo nella stessa coda o sottoscrizione) durante la durata del blocco specificata nella descrizione della coda o della sottoscrizione. Alla scadenza del blocco, il messaggio diventa disponibile per altri ricevitori. Per completare l'elaborazione del messaggio, il ricevitore deve eseguire un comando delete con l'ID di blocco ricevuto da questa operazione. Per abbandonare l'elaborazione del messaggio e sbloccarla per altri ricevitori, deve essere eseguito un comando sblocca messaggio; in caso contrario, il periodo di durata del blocco può scadere.

Questa operazione deve essere usata nelle applicazioni che richiedono garanzie di recapito con at-least-once. Se il ricevitore non elimina il messaggio prima che l'elaborazione abbia esito positivo, questa operazione garantisce che un altro ricevitore sia in grado di tentare l'elaborazione dopo la scadenza del periodo di durata del blocco.

Richiesta

Metodo URI della richiesta Versione HTTP
INSERISCI http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath}/messages/head

o

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

Intestazioni della richiesta

Nella tabella seguente vengono descritte le intestazioni di richiesta obbligatorie e facoltative. Oltre alle proprietà elencate, l'intestazione può contenere proprietà personalizzate. Vedere l'esempio.

Intestazione richiesta Descrizione
Autorizzazione Specificare uno dei valori di token seguenti:

Corpo della richiesta

Nessuno.

Risposta

La risposta include un codice di stato HTTP, un set di intestazioni di risposta e il corpo della risposta.

Codici di risposta

Codice Descrizione
201 Messaggio recuperato e bloccato correttamente.
204 Nessun messaggio disponibile entro il periodo di timeout specificato.
400 Richiesta non valida.
401 Errore di autorizzazione.
410 La coda o la sottoscrizione specificata non esiste.
500 Errore interno.

Per informazioni sui codici di stato, vedere Status and Error Codes.

Intestazioni di risposta

La risposta per questa operazione include le intestazioni seguenti. La risposta potrebbe includere anche intestazioni HTTP più standard. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1 .

Intestazione della risposta Descrizione
Content-Type Impostare su application/atom+xml;type=entry;charset=utf-8.
Location URI del messaggio bloccato. È possibile usare questo URI per sbloccare o eliminare il messaggio.
BrokerProperties BrokerProperties con codifica JSON del messaggio ricevuto. La proprietà LockToken rappresenta l'ID di blocco per il messaggio restituito. La proprietà SequenceNumber rappresenta il numero di sequenza del messaggio restituito.

Corpo della risposta

Il corpo della risposta è il corpo del messaggio recuperato.

Esempio

La richiesta HTTP seguente blocca e restituisce un messaggio da una coda:

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  

Il bus di servizio restituisce la risposta seguente. Il messaggio contiene le proprietà personalizzate Priority e 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  

Vedere anche