Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
I det här avsnittet visas exempel på routningsprocessen för Service Broker. Varje exempel innehåller exempelroutningstabeller för AdventureWorks2008R2 och msdb, och beskriver hur Service Broker använder dessa routningstabeller för att välja en väg för meddelandet.
Not
Kodexemplen i den här artikeln har testats med hjälp av AdventureWorks2025 exempeldatabas som du kan ladda ned från Microsoft SQL Server-exempel och Community Projects startsida.
Routningstabellerna som presenteras i det här avsnittet är förenklade versioner av sys.routes katalogvyn. Routnings-ID:t och ägaren är inte viktiga för routningsprocessen och alla vägar anses ha en obegränsad livslängd.
NULL Värdet i remote_service_name kolumnen matchar alla tjänstnamn.
NULL Värdet i broker_instance kolumnen matchar alla Service Broker-identifierare.
Exemplen för utgående meddelanden använder inte routningstabellen i msdb, och exemplen för inkommande meddelanden och vidarebefordran av meddelanden använder inte routningstabellen för AdventureWorks2008R2.
Exempel 1: Standardkonfiguration
I det här exemplet beskrivs standardkonfigurationen för Service Broker-routning. Som standardinställning innehåller alla databaser utom masterAutoCreatedLocal-rutten. Därför innehåller routningstabellerna för AdventureWorks2008R2 och msdb följande information.
| Kolumn | AdventureWorks2008R2 | msdb |
|---|---|---|
name |
AutoCreatedLocal |
AutoCreatedLocal |
remote_service_name |
NULL |
NULL |
broker_instance |
NULL |
NULL |
address |
LOCAL |
LOCAL |
mirror_address |
NULL |
NULL |
I det här fallet levereras alla dialogrutor som skapats i AdventureWorks2008R2 databasen till en tjänst i den aktuella instansen. Dessutom levereras alla dialoger som anländer från utanför instansen till en tjänst i den aktuella instansen.
För konversationer som skapats i AdventureWorks2008R2, är AutoCreatedLocal den enda vägen i AdventureWorks2008R2.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Processen är densamma för konversationer som kommer utanför instansen. För konversationer som kommer utanför instansen AutoCreatedLocal är den enda vägen i msdb.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 2: Nätverksväg till en specifik tjänst
I det här exemplet beskrivs den typiska routningskonfigurationen för tjänster utanför den aktuella instansen. Om du vill konfigurera en väg till en extern tjänst skapar du vägen i databasen som påbörjar konversationen. I det här exemplet AdventureWorks2008R2 innehåller en väg för tjänsten OrderParts. Vägen innehåller en nätverksadress för OrderParts tjänsten.
| Kolumn | AdventureWorks2008R2 | AdventureWorks2008R2 | msdb |
|---|---|---|---|
name |
AutoCreatedLocal |
OrderPartsRoute |
AutoCreatedLocal |
remote_service_name |
NULL |
OrderParts |
NULL |
broker_instance |
NULL |
NULL |
NULL |
address |
LOCAL |
TCP://host2.Adventure-Works.com:4022/ |
LOCAL |
mirror_address |
NULL |
NULL |
NULL |
I det här fallet matchar alla dialogrutor som skapats i AdventureWorks2008R2 databasen till tjänsten OrderParts vägen OrderPartsRoute. Service Broker skickar dessa meddelanden till nätverksadressen TCP://host2.Adventure-Works.com:4022/. Alla andra konversationer levereras till tjänster i samma instans.
För konversationer som skapas i AdventureWorks2008R2 med OrderParts som måltjänst innehåller uppsättningen matchande vägar OrderPartsRoute, eftersom den här vägen exakt matchar tjänstens namn.
OrderPartsRoute är den enda vägen i uppsättningen matchande vägar, så Service Broker väljer den vägen.
För konversationer som skapas i AdventureWorks2008R2 och riktas till en annan tjänst innehåller uppsättningen med matchande rutter AutoCreatedLocal. Eftersom det här är den enda vägen i uppsättningen matchande vägar väljer Service Broker den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen markerar Service Broker konversationen DELAYED.
För konversationer som kommer utanför instansen AutoCreatedLocal är den enda vägen i msdb.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 3: Nätverksväg till en speglad databas
I det här exemplet beskrivs den typiska routningskonfigurationen för en tjänst som hanteras av en speglad databas utanför den aktuella instansen. Om du vill konfigurera en väg till en extern tjänst skapar du vägen i databasen som påbörjar konversationen. I det här exemplet AdventureWorks2008R2 innehåller en väg för tjänsten OrderParts. Rutten innehåller både en nätverksadress och en speglingsadress för OrderParts-tjänsten.
| Kolumn | AdventureWorks2008R2 | AdventureWorks2008R2 | msdb |
|---|---|---|---|
name |
AutoCreatedLocal |
OrderPartsRoute |
AutoCreatedLocal |
remote_service_name |
NULL |
OrderParts |
NULL |
broker_instance |
NULL |
NULL |
NULL |
address |
LOCAL |
TCP://partner1.Adventure-Works.com:4022/ |
LOCAL |
mirror_address |
NULL |
TCP://partner2.Adventure-Works.com:4022/ |
NULL |
För konversationer som skapas i AdventureWorks2008R2 med OrderParts som måltjänst innehåller uppsättningen matchande vägar OrderPartsRoute, eftersom den här vägen exakt matchar tjänstens namn.
OrderPartsRoute är den enda vägen i uppsättningen matchande vägar, så Service Broker väljer den vägen. Service Broker kontrollerar både adressen och speglingsadressen för att avgöra vilken partner som är huvudpartner och skickar sedan meddelandet till huvudpartnern.
För konversationer som skapas i AdventureWorks2008R2 och riktas till en annan tjänst innehåller uppsättningen med matchande rutter AutoCreatedLocal. Eftersom det här är den enda vägen i uppsättningen matchande vägar väljer Service Broker den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen markerar Service Broker konversationen DELAYED.
För konversationer som kommer utanför instansen AutoCreatedLocal är den enda vägen i msdb.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 4: Nätverksväg till alla externa tjänster
Det här exemplet skickar meddelanden från tjänster i AdventureWorks2008R2 till en annan instans om inte tjänsten finns i den lokala instansen. Meddelanden för tjänster som inte finns i den lokala instansen går till samma nätverksadress. Den här konfigurationen kan vara användbar om SQL Server-instansen på den nätverksadressen utför vidarebefordran av meddelanden.
I det här exemplet innehåller databasen AdventureWorks2008R2 rutten AutoCreatedLocal samt en väg till adressen TCP://forwarding.Adventure-Works.com:4022/.
| Kolumn | AdventureWorks2008R2 | AdventureWorks2008R2 | msdb |
|---|---|---|---|
name |
AutoCreatedLocal |
ExternalRoute |
AutoCreatedLocal |
remote_service_name |
NULL |
NULL |
NULL |
broker_instance |
NULL |
NULL |
NULL |
address |
LOCAL |
TCP://forwarding.Adventure-Works.com:4022/ |
LOCAL |
mirror_address |
NULL |
NULL |
NULL |
För konversationer som skapas i AdventureWorks2008R2innehåller uppsättningen matchande vägar både AutoCreatedLocal och ExternalRoute, eftersom fjärrtjänstnamnet och koordinatorinstansen är desamma för båda vägarna. Service Broker måste välja mellan dessa två vägar. Service Broker väljer vägar med adressen 'LOCAL' före vägar som anger en nätverksadress, så Service Broker väljer AutoCreatedLocalförst . Om måltjänsten finns i den lokala instansen använder Service Broker den här vägen och levererar meddelandet till den tjänsten. Men om måltjänsten inte finns i den lokala instansen, väljer Service Broker ExternalRoute.
För konversationer som kommer utanför instansen AutoCreatedLocal är den enda vägen i msdb.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 5: Nätverksväg till olika instanser av en tjänst
Det här exemplet visar en routningskonfiguration där två olika nätverksadresser är värdar för olika instanser av samma tjänst. Den här konfigurationen kan vara användbar för en belastningsutjämningskonfiguration.
I det här exemplet innehåller databasen AdventureWorks2008R2 ruten AutoCreatedLocal samt rutter till tjänsten BalancedService.
| Kolumn | AdventureWorks2008R2 | AdventureWorks2008R2 | AdventureWorks2008R2 | msdb |
|---|---|---|---|---|
name |
AutoCreatedLocal |
BalancedRouteOne |
BalancedRouteTwo |
AutoCreatedLocal |
remote_service_name |
NULL |
BalancedService |
BalancedService |
NULL |
broker_instance |
NULL |
5fb8d92b-ed69-4c80-afbb-2aa6a7d3cb2d |
81b1d3d0-288e-4d2c-b1d3-456cbb944b4f |
NULL |
address |
LOCAL |
TCP://server1.Adventure-Works.com:4022/ |
TCP://server2.Adventure-Works.com:4022/ |
LOCAL |
mirror_address |
NULL |
NULL |
NULL |
NULL |
För konversationer som skapats i AdventureWorks2008R2 databasen till tjänsten BalancedService som inte anger en Service Broker-identifierare innehåller uppsättningen matchande vägar antingen BalancedRouteOne och BalancedRouteTwo. Eftersom vägarna innehåller olika Service Broker-identifierare väljer matchningsprocessen godtyckligt en Service Broker-identifierare och matchar den vägen. Eftersom endast en väg matchar väljer Service Broker den vägen för konversationen. Resultatet är att vissa konversationer dirigeras till TCP://server1.Adventure-Works.com:4022/och andra konversationer dirigeras till TCP://server2.Adventure-Works.com:4022/. Men när Service Broker får en bekräftelse för ett meddelande i en konversation använder Service Broker service broker-identifieraren som finns i bekräftelsen för andra meddelanden i konversationen. När den första bekräftelsen har tagits emot dirigeras alla framtida meddelanden i konversationen med hjälp av Service Broker-identifieraren i bekräftelsen.
För konversationer som skapats i AdventureWorks2008R2 databasen till tjänsten BalancedService som anger någon av Service Broker-identifierarna i routningstabellen innehåller uppsättningen matchande vägar den väg som matchar Service Broker-identifieraren. Samtalet dirigeras till adressen på rutten med Service Broker-identifikatorn.
För konversationer som skapats i AdventureWorks2008R2 till en annan måltjänst innehåller uppsättningen matchande vägar endast AutoCreatedLocal. Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen markerar Service Broker konversationen DELAYED.
För konversationer som kommer utanför instansen AutoCreatedLocal är den enda vägen i msdb.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 6: Vidarebefordran av meddelanden för en specifik tjänst
Det här exemplet vidarebefordrar meddelanden utanför den lokala instansen till tjänsten ElsewhereService till nätverksadressen TCP://elsewhere.Adventure-Works.com:4022/. För alla andra tjänster levererar Service Broker meddelandena till en tjänst i den lokala instansen eller markerar konversationen DELAYED om tjänsten inte finns i den lokala instansen.
| Kolumn | AdventureWorks2008R2 | msdb | msdb |
|---|---|---|---|
name |
AutoCreatedLocal |
AutoCreatedLocal |
ForwardingRoute |
remote_service_name |
NULL |
NULL |
ElsewhereService |
broker_instance |
NULL |
NULL |
NULL |
address |
LOCAL |
LOCAL |
TCP://elsewhere.Adventure-Works.com:4022/ |
mirror_address |
NULL |
NULL |
NULL |
För konversationer som skapats i AdventureWorks2008R2, är AutoCreatedLocal den enda vägen i AdventureWorks2008R2.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen markerar Service Broker konversationen DELAYED. En konversation som skapats i AdventureWorks2008R2 till tjänsten ElsewhereService dirigeras inte till TCP://elsewhere.Adventure-Works.com:4022/.
För konversationer som kommer från utanför instansen till tjänsten ElsewhereService matchar vägen ForwardingRoute exakt tjänstens namn.
ForwardingRoute Därför är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen när vidarebefordran av meddelanden är på. Service Broker väljer den här vägen även om den lokala instansen innehåller tjänsten ElsewhereService. Om vidarebefordran av meddelanden är inaktiverad släpper Service Broker meddelandet.
För konversationer som kommer från utanför instansen till alla andra tjänster, AutoCreatedLocal är den enda matchande rutten i msdb.sys.routes. Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen tas meddelandet bort.
Exempel 7: Vidarebefordran av meddelanden för alla tjänster som inte finns i instansen
Det här exemplet skickar meddelanden utanför den lokala instansen till en annan instans om inte tjänsten finns i den lokala instansen. Meddelanden för alla externa tjänster går till samma nätverksadress. Den här konfigurationen kan vara användbar för vidarebefordran av meddelanden.
| Kolumn | AdventureWorks2008R2 | msdb | msdb |
|---|---|---|---|
name |
AutoCreatedLocal |
AutoCreatedLocal |
ForwardingRoute |
remote_service_name |
NULL |
NULL |
NULL |
broker_instance |
NULL |
NULL |
NULL |
address |
LOCAL |
LOCAL |
TCP://forwarding.Adventure-Works.com:4022/ |
mirror_address |
NULL |
NULL |
NULL |
För konversationer som skapats i AdventureWorks2008R2, är AutoCreatedLocal den enda vägen i AdventureWorks2008R2.sys.routes. Den vägen är den enda vägen i uppsättningen matchande vägar, och Service Broker väljer den vägen. Om tjänsten för meddelandet inte finns i den lokala instansen markerar Service Broker konversationen DELAYED.
För konversationer som kommer från utanför databasen innehåller uppsättningen matchande vägar både AutoCreatedLocal och ForwardingRoute, eftersom båda vägarna anger samma fjärrtjänstnamn och Service Broker-identifierare. Service Broker måste välja mellan dessa två vägar. Service Broker väljer vägar med adressen 'LOCAL' före vägar som anger en nätverksadress, så Service Broker väljer AutoCreatedLocalförst . Om måltjänsten finns i den lokala instansen använder Service Broker den här vägen och levererar meddelandet till den tjänsten. Men om måltjänsten inte finns i den lokala instansen och vidarebefordran av meddelanden är aktiverad väljer ForwardingRouteService Broker . Om meddelandevidarebefordring inte är aktiverat släpper Service Broker meddelandet om måltjänsten inte finns i den lokala instansen.