Service Broker-Routingbeispiele

In diesem Abschnitt werden Beispiele für den Service Broker-Routingprozess beschrieben. Jedes Beispiel enthält beispielhafte Routingtabellen für AdventureWorks2008R2 und msdb und beschreibt, wie Service Broker diese Routingtabellen verwendet, um eine Route für die Nachricht auszuwählen.

Die in diesem Thema vorgestellten Routingtabellen sind vereinfachte Versionen der Katalogsicht sys.routes. Die Routen-ID und der Besitzer sind für den Routingprozess nicht wichtig, und alle Routen werden als nicht zeitlich begrenzt angesehen.

Ein NULL-Wert in der Spalte remote_service_name stimmt mit jedem Dienstnamen überein. Ein NULL-Wert in der Spalte broker_instance stimmt mit jedem Service Broker-Bezeichner überein.

In den Beispielen für ausgehende Nachrichten wird die Routingtabelle in msdb nicht verwendet. In den Beispielen für eingehende Nachrichten und Nachrichtenweiterleitung wird nicht die Routingtabelle für AdventureWorks2008R2 verwendet.

Beispiel 1: Standardkonfiguration

In diesem Beispiel wird die Standardkonfiguration für das Service Broker-Routing beschrieben. Standardmäßig enthalten alle Datenbanken außer master die Route AutoCreatedLocal. Deshalb enthalten die Routingtabellen AdventureWorks2008R2 und msdb die folgenden Informationen.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

In diesem Fall werden alle in der Datenbank AdventureWorks2008R2 erstellten Dialoge an einen Dienst in der aktuellen Instanz übermittelt. Zusätzlich werden alle von außerhalb der Instanz empfangenen Dialoge an einen Dienst in der aktuellen Instanz übermittelt.

Für in AdventureWorks2008R2 erstellte Konversationen ist AutoCreatedLocal die einzige Route in AdventureWorks2008R2.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Der Prozess ist bei von außerhalb der Instanz eingehenden Konversationen derselbe. Bei von außerhalb der Instanz eingehenden Konversationen ist AutoCreatedLocal die einzige Route in msdb.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 2: Netzwerkroute zu einem bestimmten Dienst

In diesem Beispiel wird die typische Routingkonfiguration für Dienste außerhalb der aktuellen Instanz beschrieben. Zum Konfigurieren einer Route zu einem externen Dienst erstellen Sie die Route in einer Datenbank, die mit der Konversation beginnt. In diesem Beispiel enthält AdventureWorks2008R2 eine Route zum Dienst OrderParts. Die Route enthält eine Netzwerkadresse für den Dienst OrderParts.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

OrderPartsRoute

OrderParts

NULL

tcp://host2.Adventure-Works.com:4022/

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

In diesem Fall stimmen alle in der Datenbank AdventureWorks2008R2 für den Dienst OrderParts erstellten Dialoge mit der Route OrderPartsRoute überein. Service Broker sendet diese Adressen an die Netzwerkadresse tcp://host2.Adventure-Works.com:4022/. Alle anderen Konversationen werden an Dienste innerhalb derselben Instanz übermittelt.

Bei in AdventureWorks2008R2 erstellten Konversationen mit dem Dienst OrderParts als Ziel enthält der Satz übereinstimmender Routen die Route OrderPartsRoute, da diese Route exakt mit dem Dienstnamen übereinstimmt. OrderPartsRoute ist die einzige Route im Satz übereinstimmender Routen. Deshalb wählt Service Broker diese Route aus.

Bei in AdventureWorks2008R2 erstellten Konversationen mit einem anderen Zieldienst enthält der Satz übereinstimmender Routen die Route AutoCreatedLocal. Da dies die einzige Route im Satz übereinstimmender Routen ist, wählt Service Broker diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, kennzeichnet Service Broker die Konversation als DELAYED.

Bei von außerhalb der Instanz eingehenden Konversationen ist AutoCreatedLocal die einzige Route in msdb.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 3: Netzwerkroute zu einer gespiegelten Datenbank

In diesem Beispiel wird die typische Routingkonfiguration für einen Dienst beschrieben, dem eine gespiegelte Datenbank außerhalb der aktuellen Instanz als Host dient. Zum Konfigurieren einer Route zu einem externen Dienst erstellen Sie die Route in einer Datenbank, die mit der Konversation beginnt. In diesem Beispiel enthält AdventureWorks2008R2 eine Route zum Dienst OrderParts. Die Route enthält sowohl eine Netzwerkadresse als auch eine Spiegeladresse für den Dienst OrderParts.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

OrderPartsRoute

OrderParts

NULL

tcp://partner1.Adventure-Works.com:4022/

tcp://partner2.Adventure-Works.com:4022/

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

Bei in AdventureWorks2008R2 erstellten Konversationen mit dem Dienst OrderParts als Ziel enthält der Satz übereinstimmender Routen die Route OrderPartsRoute, da diese Route exakt mit dem Dienstnamen übereinstimmt. OrderPartsRoute ist die einzige Route im Satz übereinstimmender Routen. Deshalb wählt Service Broker diese Route aus. Service Broker überprüft sowohl die Adresse als auch die Spiegeladresse, um zu bestimmen, welcher Partner der Prinzipal ist, und sendet dem Prinzipal dann eine Nachricht.

Bei in AdventureWorks2008R2 erstellten Konversationen mit einem anderen Zieldienst enthält der Satz übereinstimmender Routen die Route AutoCreatedLocal. Da dies die einzige Route im Satz übereinstimmender Routen ist, wählt Service Broker diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, kennzeichnet Service Broker die Konversation als DELAYED.

Bei von außerhalb der Instanz eingehenden Konversationen ist AutoCreatedLocal die einzige Route in msdb.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 4: Netzwerkroute zu allen externen Diensten

In diesem Beispiel werden Nachrichten von Diensten in AdventureWorks2008R2 an eine andere Instanz gesendet, es sei denn, der Dienst ist in der lokalen Instanz vorhanden. Beachten Sie, dass Nachrichten für beliebige Dienste, die nicht in der lokalen Instanz enthalten sind, an dieselbe Netzwerkadresse gehen. Diese Konfiguration kann nützlich sein, wenn die SQL Server-Instanz an der Netzwerkadresse die Nachrichten weiterleitet.

In diesem Beispiel enthält die Datenbank AdventureWorks2008R2 sowohl die Route AutoCreatedLocal als auch eine Route zur Adresse tcp://forwarding.Adventure-Works.com:4022/.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

ExternalRoute

NULL

NULL

tcp://forwarding.Adventure-Works.com:4022/

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

Bei in AdventureWorks2008R2 erstellten Konversationen enthält der Satz übereinstimmender Routen sowohl AutoCreatedLocal als auch ExternalRoute, da der Name des Remotedienstes und der Service Broker-Instanz für beide Routen derselbe ist. Service Broker muss eine dieser zwei Routen auswählen. Service Broker wählt Routen mit der Adresse 'LOCAL' vor Routen aus, die eine Netzwerkadresse angeben, deshalb wählt Service Broker zuerst AutoCreatedLocal aus. Wenn der Zieldienst in der lokalen Instanz vorhanden ist, verwendet Service Broker diese Route und übermittelt die Nachricht an diesen Dienst. Wenn der Zieldienst jedoch nicht in der lokalen Instanz vorhanden ist, wählt Service Broker ExternalRoute aus.

Bei von außerhalb der Instanz eingehenden Konversationen ist AutoCreatedLocal die einzige Route in msdb.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 5: Netzwerkroute zu anderen Instanzen eines Dienstes

In diesem Beispiel wird eine Routingkonfiguration beschrieben, bei der zwei verschiedene Netzwerkadressen als Host für verschiedene Instanzen desselben Dienstes verwendet werden. Diese Konfiguration ist möglicherweise als Lastenausgleichskonfiguration nützlich.

In diesem Beispiel enthält die Datenbank AdventureWorks2008R2 sowohl die Route AutoCreatedLocal als auch Routen zum Dienst BalancedService.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

BalancedRouteOne

BalancedService

5fb8d92b-ed69-4c80-afbb-2aa6a7d3cb2d

tcp://server1.Adventure-Works.com:4022/

NULL

BalancedRouteTwo

BalancedService

81b1d3d0-288e-4d2c-b1d3-456cbb944b4f

tcp://server2.Adventure-Works.com:4022/

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

Bei in der Datenbank AdventureWorks2008R2 erstellten Konversationen mit dem Dienst BalancedService, die keinen Service Broker-Bezeichner angeben, enthält der Satz übereinstimmender Routen entweder BalancedRouteOne oder BalancedRouteTwo. Da die Routen verschiedene Service Broker-Bezeichner enthalten, wählt der Übereinstimmungsprozess zufällig einen Service Broker-Bezeichner aus und passt die Route an. Da nur eine Route übereinstimmt, wählt Service Broker diese Route für die Konversation aus. Als Ergebnis hiervon leiten manche Konversationen an tcp://server1.Adventure-Works.com:4022/ weiter, andere an tcp://server2.Adventure-Works.com:4022/. Wenn Service Broker jedoch einmal eine Bestätigung für eine Nachricht in einer Konversation empfangen hat, verwendet Service Broker den Service Broker-Bezeichner aus der Bestätigung für andere Nachrichten in der Konversation. Nachdem die erste Bestätigung empfangen wurde, werden alle zukünftigen Nachrichten in der Konversation mithilfe des Service Broker-Bezeichners in der Bestätigung weitergeleitet.

Bei in der Datenbank AdventureWorks2008R2 erstellten Konversationen mit dem Dienst BalancedService, die einen in der Routingtabelle enthaltenen Service Broker-Bezeichner angeben, enthält der Satz übereinstimmender Routen die Route, die mit dem Service Broker-Bezeichner übereinstimmt. Die Konversation leitet an die Adresse in der Route mit dem Service Broker-Bezeichner weiter.

Bei in AdventureWorks2008R2 erstellten Konversationen mit einem anderen Zieldienst enthält der Satz übereinstimmender Routen ausschließlich die Route AutoCreatedLocal. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, kennzeichnet Service Broker die Konversation als DELAYED.

Bei von außerhalb der Instanz eingehenden Konversationen ist AutoCreatedLocal die einzige Route in msdb.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 6: Nachrichtenweiterleitung für einen bestimmten Dienst

In diesem Beispiel werden Nachrichten von außerhalb der lokalen Instanz an den Dienst ElsewhereService an die Netzwerkadresse tcp://elsewhere.Adventure-Works.com:4022/ weitergeleitet. Für alle anderen Dienste übermittelt Service Broker die Nachrichten an einen Dienst in der lokalen Instanz oder markiert die Konversation als DELAYED, wenn der Dienst in der lokalen Instanz nicht vorhanden ist.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

ForwardingRoute

ElsewhereService

NULL

tcp://elsewhere.Adventure-Works.com:4022/

NULL

Für in AdventureWorks2008R2 erstellte Konversationen ist AutoCreatedLocal die einzige Route in AdventureWorks2008R2.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, kennzeichnet Service Broker die Konversation als DELAYED. Beachten Sie, dass eine in AdventureWorks2008R2 erstellte Konversation mit dem Dienst ElsewhereService nicht an tcp://elsewhere.Adventure-Works.com:4022/ weiterleitet.

Bei von außerhalb der Instanz eingehenden Konversationen mit dem Dienst ElsewhereService stimmt die Route ForwardingRoute mit dem Dienstnamen exakt überein. Deshalb ist ForwardingRoute die einzige Route im Satz der übereinstimmenden Routen, und Service Broker wählt diese Route aus, wenn die Nachrichtenweiterleitung aktiviert ist. Service Broker wählt diese Route auch dann aus, wenn die lokale Instanz den Dienst ElsewhereService enthält. Wenn die Nachrichtenweiterleitung deaktiviert ist, löscht Service Broker die Nachricht.

Bei von außerhalb der Instanz eingehenden Konversationen mit allen anderen Diensten ist AutoCreatedLocal die einzige übereinstimmende Route in msdb.sys.routes. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, wird die Nachricht gelöscht.

Beispiel 7: Nachrichtenweiterleitung für alle nicht in der Instanz enthaltenen Dienste

In diesem Beispiel werden Nachrichten von außerhalb der lokalen Instanz an eine andere Instanz gesendet, es sei denn, der Dienst ist in der lokalen Instanz vorhanden. Beachten Sie, dass Nachrichten an alle externen Dienste an dieselbe Netzwerkadresse weitergeleitet werden. Diese Konfiguration ist möglicherweise für die Nachrichtenweiterleitung nützlich.

AdventureWorks2008R2.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

msdb.sys.routes

name

remote_service_name

broker_instance

address

mirror_address

AutoCreatedLocal

NULL

NULL

LOCAL

NULL

ForwardingRoute

NULL

NULL

tcp://forwarding.Adventure-Works.com:4022/

NULL

Für in AdventureWorks2008R2 erstellte Konversationen ist AutoCreatedLocal die einzige Route in AdventureWorks2008R2.sys.routes. Diese Route ist die einzige Route im Satz übereinstimmender Routen. Service Broker wählt diese Route aus. Wenn der Dienst für die Nachricht in der lokalen Instanz nicht vorhanden ist, kennzeichnet Service Broker die Konversation als DELAYED.

Bei von außerhalb der Datenbank eingehenden Konversationen enthält der Satz übereinstimmender Routen sowohl AutoCreatedLocal als auch ForwardingRoute, da beide Routen denselben Remotedienstnamen und Service Broker-Bezeichner angeben. Service Broker muss eine dieser beiden Routen auswählen. Service Broker wählt Routen mit der Adresse 'LOCAL' vor Routen aus, die eine Netzwerkadresse angeben, deshalb wählt Service Broker zuerst AutoCreatedLocal aus. Wenn der Zieldienst in der lokalen Instanz vorhanden ist, verwendet Service Broker diese Route und übermittelt die Nachricht an diesen Dienst. Wenn der Zieldienst jedoch nicht in der lokalen Instanz vorhanden ist und die Nachrichtenweiterleitung aktiviert ist, wählt Service Broker ForwardingRoute aus. Wenn die Nachrichtenweiterleitung nicht aktiviert ist, löscht Service Broker die Nachricht, wenn der Zieldienst in der lokalen Instanz nicht vorhanden ist.