Condividi tramite


Utilizzo di un'intestazione SOAP per la sottoscrizione di notifiche delle query

Gli endpoint HTTP supportano le richieste di notifica tramite l'elemento di intestazione <notificationRequest>. Un elemento <notificationRequest> contiene gli attributi illustrati nella tabella seguente.

Attributo

Tipo

Descrizione

notificationId

text

Stringa di messaggio per la richiesta.

deliveryService

text

Nome del servizio di Service Broker al quale recapitare le notifiche.

timeout

int

Timeout facoltativo per la richiesta.

Per ulteriori informazioni sullo schema per l'elemento <notificationRequest>, vedere Struttura dei messaggi di richiesta SOAP.

Per sottoscrivere una notifica delle query utilizzando SOAP, includere l'elemento <notificationRequest> nell'intestazione SOAP. Ad esempio, l'intestazione seguente crea una sottoscrizione di notifica con un valore di timeout 10000. I messaggi di notifica vengono recapitati al servizio di Service Broker WebCacheNotifications.

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

Per sottoscrivere una notifica delle query utilizzando l'elemento <notificationRequest> è necessario preparare gli oggetti di Service Broker sottostanti prima che l'applicazione possa richiedere la notifica. Dopo aver richiesto la sottoscrizione, l'applicazione in uso esegue il monitoraggio della coda per controllare la presenza di un messaggio di notifica e all'arrivo del messaggio reagisce nel modo appropriato.

Nell'esempio seguente viene creato un servizio denominato WebCacheMessages che utilizza la coda WebCacheNotifications e quindi viene creata una route per il servizio WebCacheMessages nel database locale.

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

Il contratto https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification specifica che i messaggi di tipo https://schemas.microsoft.com/SQL/Notifications/QueryNotification possono essere inviati dall'initiator della conversazione.

SQL Server recapita le notifiche delle query utilizzando Service Broker. Il messaggi di notifica delle query sono caratterizzati dal nome di tipo https://schemas.microsoft.com/SQL/Notifications/QueryNotification. Service Broker convalida i messaggi di questo tipo come VALID_XML WITH SCHEMA COLLECTION. L'applicazione è responsabile del monitoraggio della coda e dell'elaborazione dei messaggi di notifica. Si noti che è possibile recuperare messaggi da una coda utilizzando messaggi SOAP. Per l'elaborazione dei messaggi di notifica è inoltre possibile creare una stored procedure o un programma esterno.

Per ulteriori informazioni sulla creazione di un'applicazione per l'elaborazione dei messaggi di notifica delle query, vedere Vantaggi della programmazione con Service Broker.