Поделиться через


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

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

Запрос

Запрос можно создать 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

Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки и тестирования службы хранилища Azure.

Параметры универсального кода ресурса (URI)

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

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

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

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

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

Текст запроса

Нет.

Ответ

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

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

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

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

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

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

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

Текст ответа

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

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

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

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

Примечание

Элемент 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>  

Авторизация

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

Комментарии

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

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

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

Примечание

Вызов 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>  
  

См. также раздел

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