Partilhar via


Mensagem de atualização

A Update Message operação atualiza o tempo limite de visibilidade de uma mensagem. Você também pode usar essa operação para atualizar o conteúdo de uma mensagem. Uma mensagem deve estar em um formato que possa ser incluído em uma solicitação 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.

Solicitação

Você pode construir a Update Message solicitação da seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento e myqueue pelo nome da sua fila.

Método Solicitar URI 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 você fizer uma solicitação no serviço de armazenamento emulado, especifique o nome do host do emulador e a porta de Armazenamento em Fila como 127.0.0.1:10001, seguido pelo nome da conta de armazenamento emulada.

Método Solicitar URI 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 de URI

Você pode especificar os seguintes parâmetros no URI da solicitação.

Parâmetro Description
popreceipt Required. Especifica o valor de recibo pop válido retornado de uma chamada anterior para as operações Obter Mensagens ou Atualizar Mensagem . O popreceipt deve ser codificado por URL.
visibilitytimeout Required. Especifica o novo valor de tempo limite de visibilidade, em segundos, em relação ao tempo do servidor. O novo valor deve ser maior ou igual a 0 e não pode ser maior que 7 dias. O tempo limite de visibilidade de uma mensagem não pode ser definido como um valor posterior ao tempo de expiração. Você pode atualizar uma mensagem até que ela tenha sido excluída ou tenha expirado.
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, consulte Definindo tempos limite para operações de armazenamento em fila.

Cabeçalhos da requisição

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

Cabeçalho da solicitação Description
Authorization Required. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, consulte Autorizar solicitações para o Armazenamento do Azure.
Date or x-ms-date Required. Especifica o Tempo Universal Coordenado (UTC) para a solicitação. Para obter mais informações, consulte Autorizar solicitações para o Armazenamento do Azure.
x-ms-version Requer 2011-08-18 ou posterior. Especifica a versão da operação a ser usada para essa solicitação. Para obter mais informações, consulte Controle de versão para os serviços de Armazenamento do Azure.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres de 1 kibibyte (KiB) que é registrado nos logs quando o log é configurado. É altamente recomendável que você use esse cabeçalho para correlacionar atividades do lado do cliente com solicitações que o servidor recebe. Para obter mais informações, consulte Monitorar o armazenamento de filas do Azure.

Corpo de solicitação

O corpo da solicitação contém os dados da mensagem no seguinte formato XML. Observe que o conteúdo da mensagem deve estar em um formato que possa ser codificado com UTF-8.

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

Resposta

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

Código de estado

Uma operação bem-sucedida retorna o código de status 204 (Sem Conteúdo). Para obter informações sobre códigos de status, consulte Códigos de status 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 da solicitação Description
x-ms-request-id Esse cabeçalho identifica exclusivamente a solicitação que foi feita e pode ser usado para solucionar problemas da solicitação. Para obter mais informações, consulte Solução de problemas de operações de API.
x-ms-version Indica a versão do Armazenamento em Fila usada para executar a solicitação. Este cabeçalho é retornado para solicitações feitas 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 esse valor.
x-ms-popreceipt O recebimento pop da mensagem da fila.
x-ms-time-next-visible Um valor de data/hora UTC que representa quando a mensagem ficará visível na fila.
x-ms-client-request-id Você pode usar esse cabeçalho para solucionar problemas de solicitações e respostas correspondentes. O valor desse cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho, se ele estiver presente na solicitação. O valor é, no máximo, 1.024 caracteres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente na solicitação, esse cabeçalho não estará presente na resposta.

Corpo da resposta

Nenhum.

Authorization

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

Exemplo de solicitação e resposta

A solicitação a seguir amplia a visibilidade de uma mensagem de fila em 30 segundos e atualiza seu 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  

A solicitação é enviada com o seguinte corpo XML:

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

Após o envio do pedido, é 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 falhará se a mensagem especificada não existir na fila ou se o recibo pop especificado não corresponder à mensagem.

Um recibo Get Messages pop é devolvido pela operação ou pela Update Message operação. Os recibos pop permanecem válidos até que ocorra um dos seguintes eventos:

  • A mensagem expirou.

  • A mensagem foi excluída usando o último recibo pop recebido, de Get Messages ou Update Message.

  • O tempo de invisibilidade decorreu e a mensagem foi retirada da fila por um Get Messages pedido. Quando o tempo de invisibilidade passa, a mensagem torna-se visível novamente. Se for recuperado por outra Get Messages solicitação, o recibo pop retornado pode ser usado para excluir ou atualizar a mensagem.

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

Você pode usar a Update Message operação para estender continuamente a invisibilidade de uma mensagem de fila. Essa funcionalidade pode ser útil se você quiser que uma função de trabalho conceda 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, ela poderá estender continuamente a invisibilidade da mensagem até que ela seja processada. Se a função de trabalho falhasse durante o processamento, eventualmente a mensagem se tornaria visível novamente e outra função de trabalho poderia processá-la.

Uma mensagem deve estar em um formato que possa ser incluído em uma solicitação XML com codificação UTF-8. Para incluir marcação na mensagem, o conteúdo da mensagem deve ser codificado em Base64. Qualquer marcação XML na mensagem que não esteja codificada fará com que a mensagem seja inválida. Se um caractere inválido (por exemplo 0x1F) for incluído na mensagem, mesmo que tenha escape de XML, as leituras subsequentes da mensagem não terão êxito.

Se a mensagem for muito grande, o serviço retornará o código de status 400 (solicitação incorreta).

Consulte também

Autorizar solicitações para o Armazenamento do Azure
Códigos de status e erro
Códigos de erro de armazenamento em fila