Экспорт (0) Печать
Развернуть все

Получение сообщений

Обновлено: Ноябрь 2013 г.

Операция Get Messages извлекает одно или несколько сообщений из передней части очереди.

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

 

Метод URI запроса Версия HTTP

GET

https://myaccount.queue.core.windows.net/myqueue/messages

HTTP/1.1

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

 

Метод URI запроса Версия HTTP

GET

http://127.0.0.1:10001/devstoreaccount1/myqueue/messages

HTTP/1.1

Дополнительные сведения см. в About Development Storage.

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

 

Параметр Описание

numofmessages

Необязательно. Ненулевое целочисленное значение, которое определяет количество сообщений для получения из очереди (не более 32). Если видимых сообщений меньше, то возвращаются только видимые. По умолчанию эта операция возвращает одно сообщение из очереди.

visibilitytimeout

Обязательно. Указывает новое значение времени ожидания видимости в секундах, отсчитываемое относительно времени сервера. Новое значение должно быть больше 1 секунды или равно 1 секунде, не должно превышать 7 дней (или 2 часов для версий протокола REST ранее 2011-08-18). Время ожидания видимости сообщения может быть задано позже истечения срока.

timeout

Необязательно. Параметр timeout указывается в секундах. Дополнительные сведения см. в Задание времени ожидания для операций службы очередей.

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

 

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

Authorization

Обязательно. Указывает схему проверки подлинности, имя учетной записи и подпись. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

Date или x-ms-date

Обязательно. Задает время в формате UTC для запроса. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

x-ms-version

Необязательно. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в Управление версиями для служб хранилища Azure.

x-ms-client-request-id

Необязательно. Предоставляет сформированное клиентом непрозрачное значение с ограничением в 1 КБ, которое записывается в журналы аналитики, когда включено ведение журналов аналитики хранилища. Этот заголовок настоятельно рекомендуется использовать для соотнесения действий, выполняемых на стороне клиента, с запросами, получаемыми сервером. Дополнительные сведения см. в разделах Сведения о ведении журнала службы аналитики хранилища и Ведение журналов в Windows Azure: использование журналов для отслеживания запросов к хранилищу.

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

Успешная операция возвращает код состояния 200 (ОК).

Сведения о кодах состояния см. в разделе Коды состояний и ошибок.

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

 

Заголовок ответа Описание

x-ms-request-id

Этот заголовок однозначно определяет выполненный запрос, его также можно использовать для устранения связанных с запросом неполадок. Дополнительные сведения см. в Устранение неполадок при API-операциях.

x-ms-version

Указывает версию службы очередей, которая используется для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.

Date

Значение даты и времени в формате UTC, сформированное службой и указывающее время, когда был инициирован ответ.

XML ответа для операции Get Messages возвращается в следующем формате.

Элемент MessageID является значением GUID, которое идентифицирует сообщение в очереди. Это значение назначается сообщению службой очередей и непрозрачно для клиента. Это значение может быть использовано совместно со значением элемента PopReceipt для удаления сообщения из очереди после его получения с помощью операции Get Messages. Значение PopReceipt также непрозрачно для клиента. Его цель — обеспечить возможность удаления сообщения с помощью операции Удаление сообщения.

Элементы InsertionTime, ExpirationTime и TimeNextVisible представляются в виде значений UTC и форматируются согласно RFC 1123.

Элемент DequeueCount имеет значение 1 при первом выведении сообщения из очереди. Это значение увеличивается при каждом последующем выведении сообщения из очереди.

noteПримечание
Элемент DequeueCount возвращается в тексте ответа, только если очередь была создана в версии службы очередей 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>

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>

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

Содержимое сообщения получается в формате операции Размещение сообщения (API-интерфейс REST).

При получении сообщения из очереди ответ включает сообщение и значение подтверждения, которое необходимо для удаления сообщения. Сообщение не удаляется из очереди автоматически, однако после получения оно становится невидимым для других клиентов на интервал времени, указанный параметром visibilitytimeout.

При получении нескольких сообщений каждое сообщение имеет соответствующее подтверждение. Максимальное число сообщений, которые могут быть получены одновременно, — 32.

Клиент, который получает сообщение, должен удалить сообщение после обработки до времени, указанного элементом TimeNextVisible в ответе. Это время вычисляется с учетом значения параметра visibilitytimeout. Сумма времени получения сообщения и значения visibilitytimeout дает значение TimeNextVisible.

Сообщение, извлеченное с определенным параметром visibilitytimeout, может снова появиться до окончания времени ожидания из-за расфазировки синхронизирующих импульсов. Обратите внимание, что клиент может определить, что сообщение уже было выведено из очереди другим клиентом на основании уведомления о получении, которое уникально для каждого вывода сообщения из очереди. Если уведомление о получении у клиента не может удалить или обновить сообщение, и клиент получает ошибку 404 (не найдено), значит, сообщение уже было выведено из очереди другим клиентом.

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

Если сообщение получено первый раз, то его свойство DequeueCount имеет значение 1. Если оно не удаляется и затем извлекается снова, свойство DequeueCount увеличивается на 1. Клиент может использовать это значение, чтобы определить, сколько раз извлекалось сообщение.

Если параметр visiblitytimeout или numofmessages выходит за пределы диапазона, то служба возвращает код состояния 400 (неверный запрос). Дополнительные сведения об ошибке показаны в следующем примере.


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>

Показ:
© 2014 Microsoft