Verwenden eines SOAP-Headers zum Abonnieren von Abfragebenachrichtigungen

HTTP-Endpunkte unterstützen Benachrichtigungsanforderungen durch das <notificationRequest>-Headerelement. Ein <notificationRequest>-Element enthält die in der folgenden Tabelle aufgeführten Attribute.

Attribut

Typ

Beschreibung

notificationId

text

Die Nachrichtenzeichenfolge für die Anforderung.

deliveryService

text

Der Name des Service Broker-Diensts, an den die Benachrichtigungen geliefert werden sollen.

timeout

int

Ein optionaler Timeout für eine Anforderung.

Weitere Informationen über das Schema des <notificationRequest>-Elements finden Sie unter Struktur der SOAP-Anforderungsnachricht.

Um eine Abfragebenachrichtigung mit SOAP zu abonnieren, müssen Sie das <notificationRequest>-Element in den SOAP-Header einfügen. Der folgende Header erstellt z. B. ein Benachrichtigungsabonnement mit einem Timeout von 10.000. Benachrichtigungsmeldungen werden an den Service Broker-Dienst WebCacheNotifications zugestellt.

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

Für ein Abonnement einer Abfragebenachrichtigung mit <notificationRequest>-Element müssen Sie die zugrunde liegenden Service Broker-Objekte vorbereiten, bevor Ihre Anwendung die Benachrichtigung anfordern kann. Nachdem Sie das Abonnement angefordert haben, überwacht Ihre Anwendung die Warteschlange und reagiert entsprechend, sobald eine Nachricht ankommt.

Das folgende Beispiel erstellt einen Dienst namens WebCacheMessages, der die Warteschlange WebCacheNotifications verwendet und dann eine Route zum WebCacheMessages-Dienst in der lokalen Datenbank erstellt.

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

Der Vertrag https://schemas.microsoft.com/SQL/Notifications/PostQueryNotification legt fest, dass vom Initiator der Konversation Nachrichten vom Typ https://schemas.microsoft.com/SQL/Notifications/QueryNotification gesendet werden können.

SQL Server übermittelt Abfragebenachrichtigungen mithilfe von Service Broker. Eine Abfragebenachrichtigungsmeldung besitzt den Nachrichtentypnamen https://schemas.microsoft.com/SQL/Notifications/QueryNotification. Service Broker überprüft Nachrichten dieses Typs als VALID_XML WITH SCHEMA COLLECTION. Die Anwendung ist für die Überwachung der Warteschlange und für die Verarbeitung der Benachrichtigungsmeldungen verantwortlich. Beachten Sie, dass Sie mit SOAP-Nachrichten Nachrichten aus einer Warteschlange abrufen können. Sie können auch eine gespeicherte Prozedur oder ein externes Programm schreiben, um die Benachrichtigungsmeldungen zu verarbeiten.

Weitere Informationen zum Erstellen einer Anwendung für die Verarbeitung von Benachrichtigungsmeldungen finden Sie unter Vorteile der Programmierung mit Service Broker.