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


Просмотр и блокировка сообщения (неразрушающее чтение)

Эта операция автоматически извлекает и блокирует сообщение из очереди или подписки для обработки. При этом гарантируется, что сообщение не будет доставляться другим получателям в той же очереди или подписке на протяжении периода блокировки, указанного в описании очереди или подписки. По прошествии периода блокировки сообщение будет доступно другим получателям. Чтобы завершить обработку сообщения, получатель должен отправить команду удаления, указав ИД блокировки, полученный в этой операции. Чтобы отказаться от обработки сообщения и разблокировать его для других получателей, необходимо выполнить команду Разблокировать сообщение , в противном случае срок действия блокировки может истечь.

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

Запрос

Метод Универсальный код ресурса (URI) запроса Версия HTTP
POST http{s}://{serviceNamespace}.servicebus.windows.net/{queuePath}/messages/head

или

http{s}://{serviceNamespace}.servicebus.windows.net/{topicPath}/subscriptions/{subscriptionName}/messages/head|HTTP/1.1

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

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

Заголовок запроса Описание
Авторизация Укажите одно из следующих значений токена:

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

Нет.

Ответ

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

Коды ответов

Код Описание
201 Сообщение успешно извлечено и заблокировано.
204 Нет сообщений с указанным временем ожидания.
400 Недопустимый запрос.
401 Ошибка авторизации.
410 Указанная очередь или подписка не существует.
500 Внутренняя ошибка.

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

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

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

Заголовок ответа Описание
Content-Type Задайте значение application/atom+xml;type=entry;charset=utf-8.
Location URI заблокированного сообщения. Этот URI можно использовать для разблокировки или удаления сообщения.
BrokerProperties Полученное сообщение в кодировке BrokerProperties JSON. Свойство LockToken представляет идентификатор блокировки для возвращаемого сообщения. Свойство SequenceNumber представляет порядковый номер возвращаемого сообщения.

Текст ответа

Текстом ответа является текст извлеченного сообщения.

Пример

Следующий HTTP-запрос блокирует и возвращает сообщение из очереди.

POST https://your-namespace.servicebus.windows.net/HttpClientSampleQueue/messages/head?timeout=60 HTTP/1.1  
Authorization: SharedAccessSignature sr=your-namespace&sig=Fg8yUyR4MOmXfHfj55f5hY4jGb8x2Yc%2b3%2fULKZYxKZk%3d&se=1404256819&skn=RootManageSharedAccessKey  
Host: your-namespace.servicebus.windows.net  
Content-Length: 0  

Служебная шина возвращает следующий ответ. Сообщение содержит настраиваемые свойства Priority и Customer:

HTTP/1.1 201 Created  
Transfer-Encoding: chunked  
Content-Type: application/atom+xml;type=entry;charset=utf-8  
Location: https://your-namespace.servicebus.windows.net/httpclientsamplequeue/messages/2/7da9cfd5-40d5-4bb1-8d64-ec5a52e1c547  
Server: Microsoft-HTTPAPI/2.0  
BrokerProperties: {"DeliveryCount":1,"EnqueuedSequenceNumber":0,"EnqueuedTimeUtc":"Wed, 02 Jul 2014 01:32:27 GMT","Label":"M1","LockToken":"7da9cfd5-40d5-4bb1-8d64-ec5a52e1c547","LockedUntilUtc":"Wed, 02 Jul 2014 01:33:27 GMT","MessageId":"31907572164743c38741631acd554d6f","SequenceNumber":2,"State":"Active","TimeToLive":10}  
Priority: "High"  
Customer: "12345,ABC"  
Date: Wed, 02 Jul 2014 01:32:27 GMT  
  
12  
This is a message.  
0  

См. также:

Образец HTTP-клиента служебной шины