Сообщение об обновлении

Эта Update Message операция обновляет время ожидания видимости сообщения. Эту операцию также можно использовать для обновления содержимого сообщения. Сообщение должно быть в формате, который может быть включен в запрос XML с кодировкой UTF-8, а размер закодированного сообщения не должен превышать 64 КБ. Эта операция появилась в версии 2011-08-18 API хранилища очередей Azure.

Просьба

Вы можете сконструировать Update Message запрос следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем учетной записи хранения, а myqueue — именем очереди.

Метод Запрос URI Версия HTTP
PUT https://myaccount.queue.core.windows.net/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Услуга эмулированного хранилища

Эта операция поддерживается для SDK 1.6 и более поздних версий.

При отправке запроса к эмулируемой службе хранилища укажите имя узла эмулятора и порт хранилища очередей как 127.0.0.1:10001, а затем имя эмулируемой учетной записи хранения.

Метод Запрос URI Версия HTTP
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue/messages/messageid?popreceipt=<string-value>&visibilitytimeout=<int-seconds> HTTP/1.1

Параметры URI

В URI запроса можно указать следующие параметры.

Параметр Description
popreceipt Обязательное. Указывает допустимое значение всплывающей квитанции, возвращенное в результате более раннего вызова операций «Получить сообщения » или «Обновить сообщение ». Они popreceipt должны быть закодированы в URL-адресах.
visibilitytimeout Обязательное. Указывает новое значение времени ожидания видимости в секундах относительно времени сервера. Новое значение должно быть больше или равно 0 и не может быть больше 7 дней. Время ожидания видимости сообщения не может быть установлено на значение, позднее времени истечения срока действия. Вы можете обновлять сообщение до тех пор, пока оно не будет удалено или срок его действия не истечет.
timeout Необязательно. Параметр timeout выражается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций хранилища очередей.

Заголовки запросов

В следующей таблице описаны обязательные и необязательные заголовки запросов.

Заголовок запроса Description
Authorization Обязательное. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к службе хранилища Azure.
Date or x-ms-date Обязательное. Указывает всемирное координированное время (UTC) для запроса. Дополнительные сведения см. в статье Авторизация запросов к службе хранилища Azure.
x-ms-version Требуется 2011-08-18 или более поздняя версия. Указывает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.
x-ms-client-request-id Необязательно. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Настоятельно рекомендуется использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в статье Мониторинг хранилища очередей Azure.

Основное содержание запроса

Тело запроса содержит данные сообщения в следующем формате XML. Обратите внимание, что содержимое сообщения должно быть в формате, который может быть закодирован с помощью UTF-8.

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

Ответ

Ответ включает код состояния HTTP и набор заголовков ответа.

Код состояния

При успешной операции возвращается код состояния 204 (No Content). Сведения о кодах состояния см. в разделе Коды состояния и коды ошибок.

Заголовки ответа

Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные, стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Заголовок запроса Description
x-ms-request-id Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок запроса. Дополнительные сведения см. в разделе Устранение неполадок с операциями API.
x-ms-version Указывает версию хранилища очередей, используемую для выполнения запроса. Этот заголовок возвращается для запросов, сделанных с версией 2009-09-19 и более поздними.
Date Значение даты и времени в формате UTC, указывающее время начала ответа. Сервис генерирует это значение.
x-ms-popreceipt Всплывающее получение сообщения из очереди.
x-ms-time-next-visible Значение даты и времени в формате UTC, определяющее, когда сообщение будет отображаться в очереди.
x-ms-client-request-id Этот заголовок можно использовать для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению x-ms-client-request-id заголовка, если он присутствует в запросе. Значение составляет не более 1 024 видимых символов ASCII. x-ms-client-request-id Если заголовка нет в запросе, он не будет присутствовать в ответе.

Основная часть ответа

Нет.

Authorization

Эту операцию может выполнить владелец аккаунта. Кроме того, это может сделать любой пользователь с подписанным URL-адресом, у которого есть разрешение на выполнение этой операции.

Пример запроса и ответа

Следующий запрос расширяет видимость сообщения очереди на 30 секунд и обновляет его содержимое.

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

Запрос отправляется со следующими заголовками:

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

Запрос отправляется со следующим текстом XML:

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

После отправки запроса возвращается следующий ответ:

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  

Замечания

Операция Update Message завершается ошибкой, если указанное сообщение не существует в очереди или если указанная всплывающая квитанция не соответствует сообщению.

Всплывающая квитанция возвращается операцией Get Messages или Update Message операцией. Всплывающие квитанции остаются действительными до тех пор, пока не произойдет одно из следующих событий:

  • Срок действия сообщения истек.

  • Сообщение было удалено с использованием последней полученной всплывающей квитанции либо от , либо Update Message.Get Messages

  • Время невидимости истекло, и сообщение было выведено из очереди по запросу Get Messages . По истечении времени невидимости сообщение снова становится видимым. Если сообщение получено другим Get Messages запросом, возвращенная всплывающая квитанция может быть использована для удаления или обновления сообщения.

  • Сообщение было обновлено с учетом нового тайм-аута видимости. Когда сообщение обновится, будет возвращена новая всплывающая квитанция.

Эту Update Message операцию можно использовать для постоянного продления невидимости сообщения в очереди. Эта функция может быть полезна, если требуется, чтобы рабочая роль арендовала сообщение в очереди. Например, если рабочая роль вызывает Get Messages и понимает, что ей требуется больше времени для обработки сообщения, она может постоянно продлевать невидимость сообщения до тех пор, пока оно не будет обработано. Если рабочая роль не будет выполнена во время обработки, в конечном итоге сообщение снова станет видимым, и другая рабочая роль сможет его обработать.

Сообщение должно быть в формате, который может быть включен в XML-запрос с кодировкой UTF-8. Чтобы включить разметку в сообщение, содержимое сообщения должно быть закодировано в Base64. Любая разметка XML в сообщении, которая не закодирована, приведет к тому, что сообщение станет недействительным. Если в сообщение включен недопустимый символ (например 0x1F, ), даже если он экранирован с помощью XML, последующие чтения сообщения не увенчаются успехом.

Если сообщение слишком большое, служба возвращает код состояния 400 (Bad Request).

См. также

Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок хранилища очередей