Get Messages
Tramite l'operazione Get Messages
vengono recuperati uno o più messaggi dalla parte anteriore della coda.
Richiesta
La richiesta Get Messages
può essere costruita come segue. È consigliabile usare HTTPS. Sostituire myaccount con il nome dell'account di archiviazione e sostituire myqueue
con il nome della coda:
Metodo | URI richiesta | Versione HTTP |
---|---|---|
GET |
https://myaccount.queue.core.windows.net/myqueue/messages |
HTTP/1.1 |
Richiesta di servizio di archiviazione emulata
Quando si effettua una richiesta per il servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta di Archiviazione code di Azure come 127.0.0.1:10001
, seguito dal nome dell'account di archiviazione emulato:
Metodo | URI richiesta | Versione HTTP |
---|---|---|
GET |
http://127.0.0.1:10001/devstoreaccount1/myqueue/messages |
HTTP/1.1 |
Per altre informazioni, vedere Usare l'emulatore Azurite per lo sviluppo locale di Archiviazione di Azure.
Parametri URI
Nell'URI richiesta è possibile specificare i seguenti parametri aggiuntivi.
Parametro | Descrizione |
---|---|
numofmessages |
Facoltativa. Valore intero diverso da zero che specifica il numero di messaggi da recuperare nella coda, fino a un massimo di 32. Se sono visibili meno messaggi, vengono restituiti i messaggi visibili. Per impostazione predefinita, un singolo messaggio viene recuperato dalla coda con questa operazione. |
visibilitytimeout |
Facoltativa. Specifica il nuovo valore di timeout della visibilità, espresso in secondi, rispetto al tempo del server. Il valore predefinito è 30 secondi. Un valore specificato deve essere maggiore o uguale a 1 secondo e non può essere maggiore di 7 giorni o maggiore di 2 ore nelle versioni del protocollo REST precedenti a 2011-08-18. Il timeout di visibilità di un messaggio può essere impostato su un valore successivo alla scadenza. |
timeout |
Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostare i timeout per le operazioni di Archiviazione code di Azure. |
Intestazioni della richiesta
Nella seguente tabella vengono descritte le intestazioni di richiesta obbligatorie e facoltative.
Intestazione della richiesta | Descrizione |
---|---|
Authorization |
Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
Date o x-ms-date |
Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
x-ms-version |
Facoltativa. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure. |
x-ms-client-request-id |
Facoltativa. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log al momento della configurazione della registrazione. È consigliabile usare questa intestazione per correlare le attività lato client alle richieste ricevute dal server. Per altre informazioni, vedere Monitorare l'archiviazione code di Azure. |
Testo della richiesta
Nessuno.
Risposta
Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.
Codice stato
Un'operazione completata correttamente restituisce 200 (OK).
Per altre informazioni sui codici di stato, vedere Codici di stato e di errore.
Intestazioni di risposta
Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.
Intestazione risposta | Descrizione |
---|---|
x-ms-request-id |
Identifica in modo univoco la richiesta effettuata e può essere usata per risolvere i problemi della richiesta. Per altre informazioni, vedere Risolvere i problemi relativi alle operazioni api. |
x-ms-version |
Indica la versione di Archiviazione code di Azure usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate rispetto alla versione 2009-09-19 e successive. |
Date |
Valore di data/ora UTC generato dal servizio, che indica l'ora di avvio della risposta. |
x-ms-client-request-id |
Può essere usato per risolvere i problemi relativi alle richieste e alle risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id se è presente nella richiesta e il valore non contiene più di 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, non sarà presente nella risposta. |
Corpo della risposta
La risposta XML per l'operazione Get Messages
viene restituita nel formato seguente.
L'elemento MessageID
è un valore GUID che identifica il messaggio nella coda. Questo valore viene assegnato al messaggio da Archiviazione code di Azure ed è opaco al client. È possibile usare il valore insieme al valore dell'elemento PopReceipt
per eliminare un messaggio dalla coda dopo averlo recuperato usando l'operazione Get Messages
. Il valore di PopReceipt
è opaco anche per il client. L'unico scopo è garantire che un messaggio possa essere eliminato con l'operazione Elimina messaggio .
Gli elementi InsertionTime
, ExpirationTime
e TimeNextVisible
vengono rappresentati come valori UTC e formattati come descritto in RFC 1123.
L'elemento DequeueCount
presenta un valore 1 la prima volta che il messaggio viene rimosso dalla coda. Questo valore viene incrementato ogni volta che il messaggio viene rimosso dalla coda.
Nota
L'elemento DequeueCount
viene restituito nel corpo della risposta solo se la coda è stata creata usando Archiviazione code di Azure versione 2009-09-19.
<QueueMessagesList>
<QueueMessage>
<MessageId>string-message-id</MessageId>
<InsertionTime>insertion-time</InsertionTime>
<ExpirationTime>expiration-time</ExpirationTime>
<PopReceipt>opaque-string-receipt-data</PopReceipt>
<TimeNextVisible>time-next-visible</TimeNextVisible>
<DequeueCount>integer</DequeueCount>
<MessageText>message-body</MessageText>
</QueueMessage>
</QueueMessagesList>
Risposta di esempio
Response Status:
HTTP/1.1 200 OK
Response Headers:
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Fri, 16 Sep 2011 21:04:30 GMT
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
Response Body:
<?xml version="1.0" encoding="utf-8"?>
<QueueMessagesList>
<QueueMessage>
<MessageId>5974b586-0df3-4e2d-ad0c-18e3892bfca2</MessageId>
<InsertionTime>Fri, 09 Oct 2009 21:04:30 GMT</InsertionTime>
<ExpirationTime>Fri, 16 Oct 2009 21:04:30 GMT</ExpirationTime>
<PopReceipt>YzQ4Yzg1MDItYTc0Ny00OWNjLTkxYTUtZGM0MDFiZDAwYzEw</PopReceipt>
<TimeNextVisible>Fri, 09 Oct 2009 23:29:20 GMT</TimeNextVisible>
<DequeueCount>1</DequeueCount>
<MessageText>PHRlc3Q+dGhpcyBpcyBhIHRlc3QgbWVzc2FnZTwvdGVzdD4=</MessageText>
</QueueMessage>
</QueueMessagesList>
Autorizzazione
Questa operazione può essere eseguita dal proprietario dell'account e da qualsiasi altro utente che usa una firma di accesso condiviso con l'autorizzazione di esecuzione di questa operazione.
Commenti
Il contenuto del messaggio viene recuperato nel formato utilizzato per l'operazione Put Message .
Quando un messaggio viene recuperato dalla coda, la risposta include il messaggio e un valore di ricezione POP, necessario per eliminare il messaggio. Il messaggio non viene eliminato automaticamente dalla coda, ma dopo il recupero non è visibile ad altri client per l'intervallo di tempo specificato dal visibilitytimeout
parametro .
Se vengono recuperati più messaggi, a ogni messaggio sarà associato un valore di ricezione POP. Il numero massimo di messaggi che possono essere recuperati contemporaneamente è 32.
Il client che recupera il messaggio deve eliminare il messaggio dopo l'elaborazione e prima dell'ora specificata dall'elemento TimeNextVisible
della risposta, calcolata in base al valore del visibilitytimeout
parametro . Il valore di visibilitytimeout
viene aggiunto all'ora in cui il messaggio viene recuperato per determinare il valore di TimeNextVisible
.
A causa dell'asimmetria dell'orologio, un messaggio recuperato con un determinato visibilitytimeout
può essere visualizzato prima che sia trascorso il timeout specificato. Si noti che un client può dedurre che un messaggio è già stato dequeuato da un client diverso in base alla ricevuta pop, univoca per ogni annullamento della coda di un messaggio. Se la ricevuta pop di un client non funziona più per eliminare o aggiornare un messaggio e il client riceve un errore 404 (Non trovato), il messaggio è stato dequeued da un altro client.
In genere, quando un consumer recupera un messaggio tramite Get Messages
, tale messaggio è riservato per l'eliminazione fino alla scadenza dell'intervallo di visibilità. Ma questo comportamento non è garantito. Dopo la scadenza dell'intervallo di visibilitàtimeout , il messaggio diventa di nuovo visibile ad altri consumer. Se il messaggio non viene successivamente recuperato ed eliminato da un altro consumer, il consumer originale può eliminare il messaggio usando la ricevuta pop originale.
Quando un messaggio viene recuperato per la prima volta, la relativa proprietà DequeueCount
è impostata su 1. Se non viene eliminato e viene recuperato di nuovo, la DequeueCount
proprietà viene incrementata. Il client può utilizzare questo valore per determinare quante volte è stato recuperato un messaggio.
Se il parametro visibilitytimeout o numofmessages non è compreso nell'intervallo, il servizio restituisce il codice di stato 400 (Richiesta non valida), insieme a informazioni di errore aggiuntive, come illustrato nell'esempio seguente.
HTTP/1.1 400 One of the query parameters specified in the request URI is outside the permissible range.
Connection: Keep-Alive
Content-Length: 455
Via: 1.1 TK5-PRXY-22
Date: Wed, 02 May 2012 19:37:23 GMT
Content-Type: application/xml
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 6a03526c-ca2c-4358-a63a-b5d096988533
x-ms-version: 2011-08-18
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>OutOfRangeQueryParameterValue</Code>
<Message>One of the query parameters specified in the request URI is outside the permissible range.
RequestId:6a03526c-ca2c-4358-a63a-b5d096988533
Time:2012-05-02T19:37:24.2438463Z
</Message>
<QueryParameterName>numofmessages</QueryParameterName>
<QueryParameterValue>0</QueryParameterValue>
<MinimumAllowed>1</MinimumAllowed>
<MaximumAllowed>32</MaximumAllowed>
</Error>
Vedi anche
Codici di errore di Archiviazione code di Azure
Autorizzare le richieste ad Archiviazione di Azure
Stato e codici errore