Atualizar Mensagem

A Update Message operação atualiza o tempo limite de visibilidade de uma mensagem. Também pode utilizar esta operação para atualizar o conteúdo de uma mensagem. Uma mensagem tem de estar num formato que possa ser incluído num pedido XML com codificação UTF-8 e a mensagem codificada pode ter até 64 KB de tamanho. Esta operação foi introduzida com a versão 2011-08-18 da API de Armazenamento de Filas do Azure.

Pedir

Pode construir o pedido da Update Message seguinte forma. É recomendado HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento e myqueue pelo nome da sua fila.

Método URI do pedido Versão HTTP
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Serviço de armazenamento emulado

Esta operação é suportada para o SDK 1.6 e versões posteriores.

Quando fizer um pedido relativamente ao serviço de armazenamento emulado, especifique o nome de anfitrião do emulador e a porta de Armazenamento de Filas como 127.0.0.1:10001, seguido do nome da conta de armazenamento emulada.

Método URI do pedido Versão HTTP
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Parâmetros do URI

Pode especificar os seguintes parâmetros no URI do pedido.

Parâmetro Description
popreceipt Obrigatório. Especifica o valor de recibo pop válido devolvido de uma chamada anterior para as operações Obter Mensagens ou Atualizar Mensagem . O popreceipt tem de ser codificado com URL.
visibilitytimeout Obrigatório. Especifica o novo valor de tempo limite de visibilidade, em segundos, em relação ao tempo do servidor. O novo valor tem de ser maior ou igual a 0 e não pode ser superior a 7 dias. O tempo limite de visibilidade de uma mensagem não pode ser definido para um valor posterior ao tempo de expiração. Pode atualizar uma mensagem até ter sido eliminada ou ter expirado.
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, veja Setting timeouts for Queue Storage operations (Definir tempos limite para operações de Armazenamento de Filas).

Cabeçalhos do pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Cabeçalho do pedido Description
Authorization Obrigatório. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
Date or x-ms-date Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
x-ms-version Requer 2011-08-18 ou posterior. Especifica a versão da operação a utilizar para este pedido. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 kibibyte (KiB) que é registado nos registos quando o registo é configurado. Recomendamos vivamente que utilize este cabeçalho para correlacionar as atividades do lado do cliente com os pedidos que o servidor recebe. Para obter mais informações, veja Monitorizar o Armazenamento de Filas do Azure.

Corpo do pedido

O corpo do pedido contém os dados da mensagem no seguinte formato XML. Tenha em atenção que o conteúdo da mensagem tem de estar num formato que possa ser codificado com UTF-8.

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

Resposta

A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.

Código de estado

Uma operação bem-sucedida devolve o código de estado 204 (Sem Conteúdo). Para obter informações sobre códigos de estado, veja Códigos de estado e de erro.

Cabeçalhos de resposta

A resposta para esta operação inclui os seguintes cabeçalhos. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Cabeçalho do pedido Description
x-ms-request-id Este cabeçalho identifica exclusivamente o pedido que foi feito e pode ser utilizado para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API.
x-ms-version Indica a versão do Armazenamento de Filas utilizada para executar o pedido. Este cabeçalho é devolvido para pedidos feitos na versão 2009-09-19 e posterior.
Date Um valor de data/hora UTC que indica a hora em que a resposta foi iniciada. O serviço gera este valor.
x-ms-popreceipt O recibo pop da mensagem de fila.
x-ms-time-next-visible Um valor de data/hora UTC que representa quando a mensagem será visível na fila.
x-ms-client-request-id Pode utilizar este cabeçalho para resolver problemas de pedidos e respostas correspondentes. O valor deste cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho, se estiver presente no pedido. O valor é, no máximo, 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, este cabeçalho não estará presente na resposta.

Corpo da resposta

Nenhum.

Autorização

O proprietário da conta pode efetuar esta operação. Além disso, qualquer pessoa com uma assinatura de acesso partilhado que tenha permissão para efetuar esta operação pode fazê-lo.

Pedido e resposta de exemplo

O pedido seguinte expande a visibilidade de uma mensagem de fila em 30 segundos e atualiza o respetivo conteúdo.

PUT https://myaccount.queue.core.windows.net/myqueue/messages/663d89aa-d1d9-42a2-9a6a-fcf822a97d2c?popreceipt=AgAAAAEAAAApAAAAGIw6Q29bzAE%3d&visibilitytimeout=30&timeout=30 HTTP/1.1  
  

O pedido é enviado com os seguintes cabeçalhos:

x-ms-version: 2011-08-18  
x-ms-date: Mon, 29 Aug 2011 17:17:21 GMT  
Authorization: SharedKey myaccount:batcrWZ35InGCZeTUFWMdIQiOZPCW7UEyeGdDOg7WW4=  
Content-Length: 75  

O pedido é enviado com o seguinte corpo XML:

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

Depois de o pedido ter sido enviado, é devolvida a seguinte resposta:

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  

Observações

Uma Update Message operação falha se a mensagem especificada não existir na fila ou se o recibo pop especificado não corresponder à mensagem.

A operação ou a Get MessagesUpdate Message operação devolve um recibo pop. Os recibos pop permanecem válidos até ocorrer um dos seguintes eventos:

  • A mensagem expirou.

  • A mensagem foi eliminada com o último recibo pop recebido, de Get Messages ou Update Message.

  • O tempo de invisibilidade decorrido e a mensagem foi desconsultada por um Get Messages pedido. Quando o tempo de invisibilidade decorrido, a mensagem fica novamente visível. Se for obtido por outro Get Messages pedido, o recibo pop devolvido pode ser utilizado para eliminar ou atualizar a mensagem.

  • A mensagem foi atualizada com um novo tempo limite de visibilidade. Quando a mensagem for atualizada, será devolvido um novo recibo pop.

Pode utilizar a Update Message operação para expandir continuamente a invisibilidade de uma mensagem de fila. Esta funcionalidade pode ser útil se quiser que uma função de trabalho arrende uma mensagem de fila. Por exemplo, se uma função de trabalho chamar Obter Mensagens e reconhecer que precisa de mais tempo para processar uma mensagem, pode prolongar continuamente a invisibilidade da mensagem até ser processada. Se a função de trabalho falhasse durante o processamento, eventualmente a mensagem voltaria a ficar visível e outra função de trabalho poderia processá-la.

Ver também

Autorizar pedidos para o Armazenamento do Azure
Códigos de estado e de erro
Códigos de erro do Armazenamento de Filas