Service Broker-Anwendungen

Service Broker-Anwendungen bestehen aus einem oder mehreren Programmen und den von diesen verwendeten Datenbankobjekten. Anwendungen kommunizieren, indem Konversationen zwischen unabhängigen Komponenten, so genannten Diensten, erstellt und dann innerhalb dieser Konversationen Nachrichten ausgetauscht werden. Zur Verwendung von Service Broker werden von Anwendungen Transact-SQL-Anweisungen in einer SQL Server-Datenbank ausgeführt.

Anwendungskomponenten

Eine Service Broker-Anwendung umfasst folgende Komponenten:

  • Mindestens ein Programm, das einen Task oder eine Gruppe verwandter Tasks implementiert. Außerhalb von SQL Server können Anwendungen in einer beliebigen Programmierumgebung geschrieben werden, die Transact-SQL-Anweisungen in SQL Server ausführen kann. In SQL Server können Anwendungen in Transact-SQL oder in einer CLR-kompatiblen (Common Language Runtime) Programmiersprache als gespeicherte Prozeduren geschrieben werden.

  • Einen Dienst, der die Tasks für andere Dienste verfügbar macht. Ein Dienst ist ein Service Broker-Objekt, das einen adressierbaren Namen für eine Gruppe verwandter Tasks bereitstellt. Andere Dienste starten Konversationen mit diesem Dienst, um die Tasks auszuführen.

  • Einen Vertrag und Nachrichtentypen, durch die die Struktur und Richtung der in der Kommunikation zwischen den Diensten verwendeten Nachrichten definiert werden.

  • Eine Warteschlange, in der Nachrichten für den Dienst gespeichert werden.

  • Routen und Remotedienstbindungen (optional). Durch eine Route wird eine Netzwerkadresse dem Namen eines Remotediensts zugeordnet. Durch eine Remotedienstbindung wird ein Dienstname einem lokalen Datenbankprinzipal zugeordnet. Service Broker verwendet das dem angegebenen Prinzipal zugeordnete Zertifikat zur Autorisierung für den Remotedienst und zur Verschlüsselung der mit dem Remotedienst ausgetauschten Nachrichten. In Service Broker können die Routen und Remotedienstbindungen bei bereitgestellter Anwendung konfiguriert werden, ohne dass Änderungen an der Anwendung erforderlich sind. Auf diese Weise können Administratoren Dienste verschieben und Sicherheitsanmeldeinformationen ändern, ohne den Anwendungscode ändern zu müssen. Weitere Informationen zum Konfigurieren von Routen und Remotedienstbindungen finden Sie unter Verwaltung (Service Broker).

Service Broker DML

Normalerweise werden die Dienstdefinitionsobjekte von einer Anwendung bei der Installation eingerichtet. Während die Anwendung ausgeführt wird, sendet und empfängt sie Nachrichten in Service Broker DML (Data Manipulation Language). Die DML-Anweisungen lassen sich in drei allgemeine Kategorien einteilen: Nachrichten, Konversationen und Konversationsgruppen.

Nachrichten

Service Broker stellt die folgenden Vorgänge für die Arbeit mit Nachrichten bereit:

  • Die SEND-Anweisung sendet eine Nachricht zu einer bestimmten Konversation.

  • Die RECEIVE-Anweisung empfängt eine oder mehrere Nachrichten aus einer Warteschlange. Alle empfangenen Nachrichten gehören zu der gleichen Konversationsgruppe.

Konversationen

Service Broker stellt die folgenden Vorgänge für die Arbeit mit Konversationen bereit:

  • Die BEGIN DIALOG CONVERSATION-Anweisung startet eine Konversation zwischen zwei Diensten. Da an der Konversation genau zwei Dienste beteiligt sind, ist die Konversation ein Dialog.

  • Die END CONVERSATION-Anweisung beendet einseitig eine Konversation.

  • Die BEGIN CONVERSATION TIMER-Anweisung übermittelt zu einer bestimmten Zeit eine Dialogzeitgebernachricht an eine Seite der Konversation.

  • Die GET_TRANSMISSION_STATUS-Anweisung gibt eine Beschreibung des letzten Übertragungsfehlers für eine Konversation zurück. Wenn eine Nachricht für die Konversation beim letzten Versuch erfolgreich übertragen wurde, gibt die Anweisung keine Beschreibung zurück.

Konversationsgruppen

Service Broker stellt zwei Vorgänge zum Arbeiten mit Konversationsgruppen bereit:

  • Die GET CONVERSATION GROUP-Anweisung gibt den Bezeichner der Konversationsgruppe für die nächste zu empfangende Nachricht in einer Warteschlange zurück. Zudem sperrt die Anweisung die Konversationsgruppe.

  • Die MOVE CONVERSATION-Anweisung verschiebt eine Konversation von einer Konversationsgruppe in eine andere. Die Anweisung sperrt sowohl die ursprüngliche Konversationsgruppe als auch die Zielkonversationsgruppe.