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


Использование заголовка SOAP для подписки на уведомления запросов

Конечные точки HTTP поддерживают уведомления запросов через элемент заголовка <notificationRequest>. Элемент <notificationRequest> содержит атрибуты, приведенные в следующей таблице.

Атрибут

Тип

Описание

notificationId

text

Строка сообщения для запроса.

deliveryService

text

Имя компонента Service Broker, которому доставляются уведомления.

timeout

int

Необязательный лимит время ожидания для запроса.

Дополнительные сведения о схеме для элемента <notificationRequest> см. в разделе Структура сообщения SOAP-запроса.

Для подписки на уведомление запроса с использованием SOAP включите элемент <notificationRequest> в заголовок SOAP. Например, следующий заголовок создает подписку на уведомления с лимитом времени ожидания 10000. Сообщения уведомления доставляются в службу WebCacheNotifications компонента Service Broker.

     <SOAP-ENV:Header>
         <sqloptions:notificationRequest  notificationId="NotificationMessage"
             timeout="10000"   deliveryService="WebCacheNotifications">
         </sqloptions:notificationRequest>
      </SOAP-ENV:Header>

Для подписки на уведомление запроса с использованием элемента <notificationRequest> требуется подготовить базовые объекты компонента Service Broker, прежде чем приложение сможет запросить уведомление. Как только сделан запрос на подписку, приложение начинает отслеживать очередь на предмет сообщения уведомления, и при появлении такого сообщения соответствующим образом реагирует на него.

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

USE AdventureWorks2008R2 ;

CREATE QUEUE WebSiteCacheMessages ;

CREATE SERVICE WebCacheNotifications
  ON QUEUE WebSiteCacheMessages
  ([https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]) ;

CREATE ROUTE
  WebCacheMessagesRoute
  WITH SERVICE_NAME = 'WebCacheNotifications',
       ADDRESS = 'LOCAL' ;

Контракт https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification указывает, что сообщения типа https://schemas.microsoft.com/SQL/Notifications/QueryNotification могут посылаться инициатором диалога.

SQL Server доставляет уведомления о запросах при помощи компонента Service Broker. Сообщение уведомления о запросе имеет имя типа сообщения https://schemas.microsoft.com/SQL/Notifications/QueryNotification. Компонент Service Broker проверяет сообщения этого типа как VALID_XML WITH SCHEMA COLLECTION. Приложение отвечает за отслеживание очереди и обработку сообщений уведомления. Обратите внимание на то, что сообщения из очереди можно получить с помощью сообщений SOAP. Можно также подготовить хранимую процедуру или внешнюю программу для обработки сообщений уведомления.

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