Broker-Nachrichten
Ein Großteil der Kommunikation zwischen Anwendungen wird über anwendungsspezifische Nachrichten verarbeitet, die als Nachrichtentypobjekte definiert sind. Außerdem stellt Service Broker drei Typen von Nachrichten bereit, die Informationen von Service Broker statt anwendungsspezifischer Daten enthalten. Jede Anwendung muss Logik enthalten, um Fehlermeldungen und Nachrichten über das Beenden des Dialogs zu verarbeiten. Wenn die Anwendung einen Konversationszeitgeber für eine Dialogkonversation festlegt, muss die Anwendung Logik enthalten, um Dialogzeitgebernachrichten zu verarbeiten. Service Broker stellt diese Nachrichtentypen für jeden Dienst bereit, unabhängig davon, ob sie im Vertrag für den Dienst enthalten sind oder nicht.
Dialogzeitgebernachrichten
Dialogzeitgebernachrichten geben an, dass der Konversationszeitgeber für einen Dialog abgelaufen ist. Diese Nachrichten weisen den Typ https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer auf. Ein Konversationszeitgeber ist auf eine Seite der Konversation beschränkt. Service Broker sendet nie eine Dialogzeitgebernachricht an die andere Seite der Konversation.
Dialogzeitgebernachrichten sind leere Nachrichten. Bei einem Empfangsvorgang wird die Dialogzeitgebernachricht vor allen anderen Nachrichten für diesen Dialog empfangen, unabhängig von der Reihenfolge, in der die Timeoutnachricht in der Warteschlange eingegangen ist.
Fehlermeldungen
Wenn ein Remotedienst einen Dialog mit einem Fehler beendet oder der lokale Broker einen nicht behebbaren Fehler in einem Dialog erkennt, erstellt der lokale Broker eine Fehlermeldung. Fehlermeldungen weisen den Typ https://schemas.microsoft.com/SQL/ServiceBroker/Error auf. Fehlermeldungen werden als wohlgeformte XML-Elemente überprüft.
Das in einer Fehlermeldung enthaltene XML-Dokument verwendet den Namespace https://schemas.microsoft.com/SQL/ServiceBroker. Das Stammelement des Dokuments besitzt den lokalen Namen Error. Es enthält ein Element mit dem Namen Code und ein Element mit dem Namen Message. Das Element Code enthält einen ganzzahligen Wert. Das Element Message enthält den für den Benutzer lesbaren Text der Meldung.
Beispielsweise könnte eine von einem Ausgabenberichte verarbeitenden Dienst generierte Fehlermeldung folgende XML-Elemente (für bessere Lesbarkeit neu formatiert) enthalten:
<?xml version="1.0"?>
<Error xmlns="https://schemas.microsoft.com/SQL/ServiceBroker">
<Code>12</Code>
<Description>
Unknown cost center "127-1000". Please check the cost center list
and resubmit the report.
</Description>
</Error>
Bei einem Empfangsvorgang wird eine Fehlermeldung vor jeder anderen Meldung für diesen Dialog empfangen, mit Ausnahme einer Dialogzeitgebernachricht. Dies erfolgt unabhängig von der Reihenfolge, in der die Fehlermeldung in der Warteschlange eingegangen ist. Wenn eine Warteschlange sowohl eine Dialogzeitgebernachricht als auch eine Fehlermeldung enthält, wird die Dialogzeitgebernachricht bei einem Empfangsvorgang vor der Fehlermeldung empfangen.
Sobald eine Fehlermeldung für einen Dialog eingeht, löst der Broker einen Fehler aus, wenn von einer Anwendung eine Nachricht in diesem Dialog gesendet wird. Die verbleibenden Nachrichten für den Dialog können jedoch sogar nach dem Empfang einer Fehlermeldung von einer Anwendung empfangen werden.
Nachrichten über das Beenden des Dialogs
Wenn ein Dialog von einer Anwendung ohne Angabe eines Fehlers beendet wird, sendet der lokale Broker eine Nachricht über das Beenden des Dialogs an den Remote-Broker. Diese Nachrichten weisen den Typ https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog auf.
Nachrichten über das Beenden des Dialogs sind leere Nachrichten. Bei einem Empfangsvorgang wird eine Nachricht über das Beenden des Dialogs in der Reihenfolge empfangen, in der die Nachricht in der Warteschlange eingegangen ist.
Siehe auch
Aufgaben
Vorgehensweise: Abrufen von Informationen aus einer Service Broker-Fehlermeldung (Transact-SQL)