Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Managed Instance
Eine Anwendung verwendet Service Broker, indem sie Transact-SQL-Anweisungen ausführt, die auf in einer Datenbank definierten Service Broker-Objekten arbeiten. In diesem Abschnitt werden allgemeine Überlegungen beschrieben, wenn Sie die Service Broker-Objekte für eine Anwendung erstellen.
Übersicht
Service Broker-Objekte definieren die Metadaten und die Speicherung für eine bestimmte Gruppe von Aufgaben:
Nachrichtentypen definieren die Daten, die im Rahmen einer Konversation ausgetauscht werden.
Verträge definieren Tasks. Jeder Vertrag gibt die Nachrichtentypen an, die in einer bestimmten Konversation verwendet werden können, und legt fest, welche Seite der Konversation die Nachricht senden kann.
In einer Warteschlange werden eingehende Nachrichten für einen Dienst gespeichert.
Ein Dienst stellt eine Gruppe von verwandten Geschäftsaufgaben dar. Der Name des Diensts wird auch verwendet, um die Warteschlange für den Dienst zu suchen.
Ein Vertrag hängt von einem oder mehreren Nachrichtentypen ab. Ein Dienst hängt von einer Warteschlange ab und kann von einem oder mehreren Verträgen abhängen. Deshalb werden Verträge nach Nachrichtentypen erstellt und vor Nachrichtentypen gelöscht. Dienste werden nach Warteschlangen und Verträgen erstellt und vor Warteschlangen und Verträgen gelöscht.
- Weitere Informationen zu diesen Objekten finden Sie unter Unterhaltungsarchitektur.
Erstellen von Objekten für einen Dienst
Das Verfahren zum Erstellen von Diensten ist in seinen Grundzügen immer gleich, unabhängig davon, ob es sich um einen initiierenden Dienst, einen Zieldienst oder beides handelt.
Die Definition eines Diensts gibt die Verträge an, für die der Dienst als Ziel fungieren kann. Im Gegensatz dazu kann eine Anwendung einen Dienst verwenden, um eine Konversation einzuleiten, die einen beliebigen in der Datenbank definierten Vertrag verwendet. Service Broker verwendet diesen Ansatz, um die allgemeine Regel durchzusetzen, dass ein Dienst nur Nachrichten empfangen sollte, die die Anwendung verarbeiten kann. Um sicherzustellen, dass die Anwendung keine Nachrichten eines beliebigen oder unbekannten Typs empfängt, akzeptiert der Dienstbroker nur dann ein neues Dialogfeld, wenn das Dialogfeld einem im Dienst angegebenen Vertrag folgt. Ein initiierender Dienst gibt den Vertrag an, der verwendet werden soll, wenn die Unterhaltung beginnt. Daher muss ein initiierender Dienst den Vertrag nicht in die Dienstdefinition aufnehmen.
So erstellen Sie die Objekte für einen Dienst
Erstellen Sie Nachrichtentypen, die die Nachrichten definieren, mit denen der Dienst jede erforderliche Kommunikation aufbaut. Sie können diese Typen selbst definieren oder Skripts abrufen, um die Typen vom Ersteller des Diensts zu erstellen, mit dem Ihr Dienst kommunizieren wird. Überspringen Sie diesen Schritt, wenn die Datenbank bereits die vom Dienst benötigten Nachrichtentypen enthält.
Erstellen Sie einen oder mehrere Verträge, die die Struktur der Unterhaltungen definieren, an denen dieser Dienst teilnehmen kann. Sie können diesen Vertrag selbst definieren oder Skripts abrufen, um den Vertrag vom Ersteller des Diensts zu erstellen, mit dem Ihr Dienst kommuniziert. Überspringen Sie diesen Schritt, wenn die Datenbank bereits die vom Dienst benötigten Verträge enthält.
Erstellen einer Warteschlange Service Broker verwendet diese Warteschlange, um eingehende Nachrichten für den Dienst zu empfangen und zu speichern. Weitere Informationen zum Erstellen von Warteschlangen finden Sie unter CREATE QUEUE. Jeder Dienst muss eine Warteschlange haben. Zur Vereinfachung der Programmierung und Administration verwendet jeder Dienst im Allgemeinen eine ihm zugeordnete Warteschlange. Falls der Dienst Nachrichtenbeibehaltung erfordert, geben Sie die Nachrichtenbeibehaltung für die Warteschlange an.
Erstellen Sie einen Dienst. Die Dienstdefinition gibt die vom Dienst verwendete Warteschlange sowie die Verträge an, für die dieser Dienst als Ziel fungiert.
In den meisten Fällen erstellen Sie den Zieldienst und anschließend mithilfe der für den Zieldienst erstellten Verträge und Nachrichtentypen einen initiierenden Dienst. In einigen Fällen können Sie jedoch einen Zieldienst für einen bereits definierten initiierenden Dienst erstellen. In diesen Fällen verwendet der Zieldienst die Nachrichtentypen und Verträge, die der initiierende Dienst verwendet. Wenn Sie beispielsweise einen Zieldienst zum Empfangen von Ereignisbenachrichtigungen erstellen, verwenden Sie den Vertrag https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, da dies der Vertrag ist, den der initiierende Dienst verwendet.
Verwalten von Objektdefinitionen
Es wird empfohlen, ein Transact-SQL Skript für die von Ihrer Anwendung verwendeten Service Broker-Objekte zu erstellen. Mit diesem Transact-SQL-Skript können Sie ganz einfach auf die Besonderheiten Ihrer Service Broker-Objekte verweisen. Das Skript bietet auch eine Möglichkeit, den Dienst für ein anderes System bereitzustellen oder gegebenenfalls neu zu erstellen.
Wenn Ihre Anwendung das Senden von Nachrichten zwischen SQL Server-Instanzen umfasst, empfehlen wir, ein Skript zu erstellen, das die Nachrichtentypen und Verträge für den Dienst definiert, und ein zweites Skript, das die Warteschlange und den Dienst definiert. Im ersten Skript werden die Schnittstelle für den Dienst sowie die Objekte definiert, die vom initiierenden Dienst und vom Zieldienst gemeinsam verwendet werden. Im zweiten Skript werden der Dienstname und die Warteschlange sowie die Objekte für eine Seite der Konversation definiert.
In diesem Abschnitt
| Artikel | Description |
|---|---|
| Erstellen von Dienstbroker-Nachrichtentypen | Beschreibt Nachrichtentypen und ihre Verwendung |
| Erstellen von Service Broker-Verträgen | Beschreibt Verträge und ihre Verwendung |
| Erstellen von Service Broker-Warteschlangen | Beschreibt Warteschlangen und ihre Verwendung |
| Dienstbrokerdienste erstellen | Beschreibt Dienste und ihre Verwendung |
| Name Service Broker-Objekte | Beschreibt Aspekte für die Benennung von Service Broker-Objekten |
| Beispiel für ein Dienstskript | Beschreibt ein Transact-SQL-Codebeispiel und definiert einen Dienst. |