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