Erstellen von Service Broker-Warteschlangen

Eine Warteschlange enthält eingehende Nachrichten für einen Dienst. Anwendungen verwenden gewöhnlich nicht dieselbe Warteschlange für mehrere Dienste, sondern erstellen eine Warteschlange pro Dienst, um die Verarbeitung zu vereinfachen.

Wenn die Beibehaltungsoption für eine Warteschlange festgelegt wird, führt dies dazu, dass Nachrichten auch nach ihrer Verarbeitung beibehalten werden. Da die Anwendungsleistung durch die Beibehaltung sinkt, sollten Sie die Beibehaltung nur angeben, wenn die Anwendung dauerhaft Zugriff auf die genauen gesendeten und empfangenen Nachrichten benötigt. Weitere Informationen zur Beibehaltung von Nachrichten finden Sie unter Nachrichtenbeibehaltung.

Geben Sie bei Anwendungen, in denen keine interne Aktivierung verwendet wird, in der Warteschlangendefinition keine Aktivierungsklausel an.

Bei Anwendungen, in denen die interne Aktivierung zum Einsatz kommt, enthält die Warteschlangendefinition den Namen der gespeicherten Prozedur, die maximale Anzahl von Lesern, die für SQL Server gestartet werden sollen, sowie den Namen des Datenbankprinzipals, dessen Identität angenommen werden soll, bevor die gespeicherte Prozedur gestartet wird.

Der Name einer Warteschlange wird nicht in das Netzwerkformat einer Meldung aufgenommen. Warteschlangen sind Objekte, deren Besitzer ein Schema ist. Daher entsprechen Warteschlangennamen den Benennungskonventionen von SQL Server. Weitere Informationen zur Benennung finden Sie unter Benennen von Service Broker-Objekten.

Aktivierung gespeicherter Prozeduren

Eine Warteschlange kann einer gespeicherten Prozedur zugeordnet sein. In diesem Fall aktiviert SQL Server die gespeicherte Prozedur, wenn Nachrichten in der Warteschlange verarbeitet werden müssen. Durch diesen Prozess der automatischen Aktivierung kann eine Service Broker-Anwendung entsprechend ihrer aktuellen Verarbeitungslast dynamisch skaliert werden. Jede von Service Broker aktivierte gespeicherte Prozedur wird in einem separaten Thread ausgeführt. Wenn in einer Warteschlange eine gespeicherte Prozedur angegeben ist, startet Service Broker nach Bedarf neue Instanzen der gespeicherten Prozedur, bis die für die Warteschlange angegebene maximale Anzahl von Instanzen erreicht ist.

Eine gespeicherte Aktivierungsprozedur verarbeitet gewöhnlich eine oder mehrere Nachrichten und gibt eine Antwort an den Dienst zurück, von dem die Nachrichten stammten. Wenn Nachrichten schneller in der Warteschlange eingehen, als die gespeicherte Prozedur Nachrichten verarbeitet, startet Service Broker eine andere Instanz der gespeicherten Prozedur. Dies wiederholt sich, bis die von der Warteschlange definierte maximale Anzahl erreicht ist. Eine aktivierte gespeicherte Prozedur wird gewöhnlich beendet, wenn die Prozedur eine Zeit lang keine verfügbaren Nachrichten in der Warteschlange vorfindet.

Die Verwendung gespeicherter Aktivierungsprozeduren ist eine gängige Methode für den Entwurf von Service Broker-Anwendungen. Andere Entwürfe könnten die Anforderungen einer bestimmten Anwendung jedoch eventuell besser erfüllen. Jede Anwendung, die Transact-SQL-Batches in SQL Server ausführen kann, ist in der Lage, Nachrichten zu senden und zu empfangen. Die Nachrichten können auch von jeder gespeicherten Prozedur verarbeitet werden. Dabei spielt es keine Rolle, ob die gespeicherte Prozedur von SQL Server aktiviert, von einem SQL Server-Agent gestartet, von einer externen Anwendung ausgeführt oder interaktiv über ein Tool wie SQL Server Management Studio oder SQL Server Express Management Studio ausgeführt wird.