Aggiornamento del messaggio

Tramite l'operazione Update Message viene aggiornato il timeout di visibilità di un messaggio. È anche possibile usare questa operazione per aggiornare il contenuto di un messaggio. Un messaggio deve essere in un formato che può essere incluso in una richiesta XML con codifica UTF-8 e il messaggio codificato può avere dimensioni fino a 64 KB. Questa operazione è stata introdotta con la versione 2011-08-18 dell'API di archiviazione code di Azure.

Richiesta

È possibile costruire la Update Message richiesta come indicato di seguito. È consigliato il protocollo HTTPS. Sostituire myaccount con il nome dell'account di archiviazione e myqueue con il nome della coda.

Metodo URI richiesta Versione HTTP
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Servizio di archiviazione emulato

Questa operazione è supportata per SDK 1.6 e versioni successive.

Quando si effettua una richiesta per il servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta di archiviazione code come 127.0.0.1:10001, seguito dal nome dell'account di archiviazione emulato.

Metodo URI richiesta Versione HTTP
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Parametri URI

È possibile specificare i parametri seguenti nell'URI della richiesta.

Parametro Descrizione
popreceipt Obbligatorio. Specifica il valore di ricevuta pop valido restituito da una chiamata precedente alle operazioni Get Messages o Update Message . Deve popreceipt essere codificato con URL.
visibilitytimeout Obbligatorio. Specifica il nuovo valore di timeout di visibilità, in secondi, rispetto all'ora del server. Il nuovo valore deve essere maggiore o uguale a 0 e non può essere maggiore di 7 giorni. Il timeout di visibilità di un messaggio non può essere impostato su un valore successivo all'ora di scadenza. È possibile aggiornare un messaggio fino a quando non è stato eliminato o scaduto.
timeout Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione dei timeout per le operazioni di archiviazione code.

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 or 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 Richiede 2011-08-18 o versione successiva. 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

Il corpo della richiesta contiene i dati di messaggio nel seguente formato XML. Si noti che il contenuto del messaggio deve essere in un formato che può essere codificato con UTF-8.

<QueueMessage>  
    <MessageText>message-content</MessageText>  
</QueueMessage>  

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 il codice di stato 204 (Nessun contenuto). Per 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; La risposta può includere anche intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Intestazione della richiesta Descrizione
x-ms-request-id Questa intestazione identifica in modo univoco la richiesta effettuata e può essere usata per la risoluzione dei problemi della richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni api.
x-ms-version Indica la versione di Archiviazione code usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.
Date Valore di data/ora UTC che indica l'ora in cui è stata avviata la risposta. Il servizio genera questo valore.
x-ms-popreceipt Valore di ricezione POP del messaggio in coda.
x-ms-time-next-visible Valore data/ora UTC che indica quando il messaggio sarà visibile nella coda.
x-ms-client-request-id È possibile usare questa intestazione 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. Il valore è al massimo 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, questa intestazione non sarà presente nella risposta.

Corpo della risposta

Nessuno.

Autorizzazione

Il proprietario dell'account può eseguire questa operazione. Inoltre, chiunque disponga di una firma di accesso condiviso autorizzato a eseguire questa operazione può farlo.

Richiesta e risposta di esempio

La richiesta successiva estende la visibilità di un messaggio in coda di 30 secondi e ne aggiorna il contenuto.

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 richiesta viene inviata con le intestazioni seguenti:

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 richiesta viene inviata con il corpo XML seguente:

<QueueMessage>  
    <MessageText>new-message-content</MessageText>  
</QueueMessage>  

Dopo l'invio della richiesta viene restituita la risposta seguente:

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  

Commenti

Un'operazione Update Message ha esito negativo se il messaggio specificato non esiste nella coda o se la ricevuta pop specificata non corrisponde al messaggio.

Un valore di ricezione POP viene restituito dall'operazione Get Messages o Update Message. I valori di ricezione rimangono validi finché non si verifica uno dei seguenti eventi:

  • Il messaggio è scaduto.

  • Il messaggio è stato eliminato utilizzando l'ultima ricevuta pop ricevuta, da Get Messages o Update Message.

  • Il timeout di invisibilità è scaduto e il messaggio è stato rimosso dalla coda tramite una richiesta Get Messages. Scaduto il timeout di invisibilità, il messaggio diventa nuovamente visibile. Se viene recuperato da un'altra Get Messages richiesta, è possibile usare la ricevuta pop restituita per eliminare o aggiornare il messaggio.

  • Il messaggio è stato aggiornato con un nuovo timeout di visibilità. Se il messaggio viene aggiornato, viene restituito un nuovo valore di ricezione.

È possibile usare l'operazione Update Message per estendere continuamente l'invisibilità di un messaggio in coda. Questa funzionalità può essere utile se si vuole che un ruolo di lavoro lease un messaggio di coda. Ad esempio, se un ruolo di lavoro chiama Recupera messaggi e riconosce che richiede più tempo per elaborare un messaggio, può estendere continuamente l'invisibilità del messaggio fino a quando non viene elaborata. Se il ruolo di lavoro non riesce durante l'elaborazione, alla fine il messaggio diventa nuovamente visibile e un altro ruolo di lavoro può elaborarlo.

Vedi anche

Autorizzare le richieste ad Archiviazione di Azure
Stato e codici errore
Codici di errore di Archiviazione code