Partilhar via


Utilizando um cabeçalho SOAP para fazer assinatura em notificações de consulta

Pontos de extremidade HTTP dão suporte a solicitações de notificação por intermédio do elemento do cabeçalho <notificationRequest>. Um elemento <notificationRequest> contém os atributos mostrados na tabela a seguir.

Atributo

Tipo

Descrição

notificationId

text

A cadeia de mensagens para a solicitação.

deliveryService

text

O nome do serviço do Agente de Serviços onde as notificações serão entregues.

timeout

int

Um tempo limite opcional para a solicitação.

Para obter mais informações sobre o esquema do elemento <notificationRequest>, consulte Estrutura de mensagens de solicitação SOAP.

Para assinar uma notificação de consulta usando SOAP, inclua o elemento <notificationRequest> no cabeçalho SOAP. Por exemplo, o cabeçalho a seguir cria uma assinatura de notificação com um tempo limite de 10000. As mensagens de notificação são entregues ao serviço WebCacheNotifications do Agente de Serviços.

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

A assinatura de uma notificação usando o elemento <notificationRequest> requer que sejam preparados os objetos Agente de Serviços subjacentes antes do aplicativo poder solicitar a notificação. Depois que a assinatura for solicitada, o aplicativo vai monitorar a fila com relação à mensagem de notificação e vai reagir adequadamente quando a mensagem chegar.

O exemplo a seguir cria um serviço denominado WebCacheMessages que usa a fila WebCacheMessages e depois cria uma rota para o serviço WebCacheMessages no banco de dados local.

USE AdventureWorks ;

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' ;

O contrato https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification especifica que mensagens do tipo https://schemas.microsoft.com/SQL/Notifications/QueryNotification podem ser enviadas pelo iniciador da conversação.

O SQL Server fornece notificações de consulta por meio do Agente de Serviços. Uma mensagem de notificação de consulta tem o nome de tipo de mensagem https://schemas.microsoft.com/SQL/Notifications/QueryNotification. O Agente de Serviços valida mensagens desse tipo como VALID_XML WITH SCHEMA COLLECTION. O aplicativo é responsável por monitorar a fila e processar as mensagens de notificação. Note que você pode recuperar mensagens de uma fila usando mensagens SOAP. Você também pode escrever um procedimento armazenado ou um programa externo para processar as mensagens de notificação.

Para obter mais informações sobre como criar um aplicativo para processar mensagens de notificação de consulta, consulte Benefícios de programar com o Service Broker.