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

Извлечение сообщений

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

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

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

 

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

GET

https://myaccount.queue.core.windows.net/myqueue/messages?peekonly=true

HTTP/1.1

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

 

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

GET

http://127.0.0.1:10001/devstoreaccount1/myqueue/messages?peekonly=true

HTTP/1.1

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

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

 

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

numofmessages

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

timeout

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

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

 

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

Authorization

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

Date или x-ms-date

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

x-ms-version

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

x-ms-client-request-id

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

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

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

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

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

 

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

x-ms-request-id

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

x-ms-version

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

Date

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

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

Элемент MessageID является значением GUID, которое идентифицирует сообщение в очереди. Это значение назначается сообщению службой очередей и непрозрачно для клиента.

Элементы InsertionTime и ExpirationTime представляются в виде значений 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>
      <DequeueCount>integer</DequeueCount>
      <MessageText>message-body</MessageText>
    </QueueMessage>
</QueueMessagesList>

Учтите, что этот ответ отличается от ответа для операции Получение сообщений тем, что ответ не содержит элементов PopReceipt и TimeNextVisible.

Response Status:
HTTP/1.1 200 OK

Response Headers:
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Fri, 16 Sep 2011 22:51:18 GMT
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0

Response Body:
<?xml version="1.0" encoding="utf-8"?>
<QueueMessagesList>
  <QueueMessage>
    <MessageId>06eba214-8107-4412-a7f6-710a9baff647</MessageId>
    <InsertionTime>Fri, 09 Oct 2009 18:59:54 GMT</InsertionTime>
    <ExpirationTime>Fri, 16 Sep 2009 18:59:54 GMT</ExpirationTime>
    <DequeueCount>1</DequeueCount>
    <MessageText>PHRlc3Q+dGhpcyBpcyBhIHRlc3QgbWVzc2FnZTwvdGVzdD4=</MessageText>
  </QueueMessage>
</QueueMessagesList>

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

Если сообщение извлечено из очереди с параметром peekonly, равным true, видимость сообщения не изменяется. Сообщение остается доступным другим потребителям очереди до тех пор, пока клиент не извлечет сообщение операцией Получение сообщений. Клиент, запрашивающий сообщение, не получает подтверждения с ответом и потому не может удалить сообщение.

Только видимые сообщения могут быть извлечены операцией Peek Messages. Следует иметь в виду, что максимальное число сообщений, которые могут быть извлечены, — 32.

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

Если параметр 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>

Показ:
© 2015 Microsoft