Routningsexempel för Service Broker

gäller för:SQL ServerAzure 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.