Delen via


Voorbeelden van Service Broker-routering

van toepassing op:SQL ServerAzure SQL Managed Instance

In deze sectie vindt u voorbeelden van het Service Broker-routeringsproces. Elk voorbeeld bevat voorbeeldrouteringstabellen voor AdventureWorks2008R2 en msdb, en beschrijft hoe Service Broker deze routeringstabellen gebruikt om een route voor het bericht te kiezen.

Notitie

De codevoorbeelden in dit artikel zijn getest met behulp van de AdventureWorks2025 voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.

De routeringstabellen in dit onderwerp zijn vereenvoudigde versies van de sys.routes catalogusweergave. De route-id en de eigenaar zijn niet belangrijk voor het routeringsproces en alle routes worden beschouwd als een onbepaalde levensduur.

Een waarde in NULL de remote_service_name kolom komt overeen met een servicenaam. Een waarde in NULL de broker_instance kolom komt overeen met een Service Broker-id.

In de voorbeelden voor uitgaande berichten wordt geen gebruikgemaakt van de routeringstabel in msdben de voorbeelden voor binnenkomende berichten en het doorsturen van berichten worden niet gebruikt voor de routeringstabel.AdventureWorks2008R2

Voorbeeld 1: Standaardconfiguratie

In dit voorbeeld wordt de standaardconfiguratie voor Service Broker-routering beschreven. Standaard bevatten alle databases behalve master de AutoCreatedLocal route. De routeringstabellen voor AdventureWorks2008R2 en msdb bevatten daarom de volgende informatie.

Rubriek AdventureWorks2008R2 msdb
name AutoCreatedLocal AutoCreatedLocal
remote_service_name NULL NULL
broker_instance NULL NULL
address LOCAL LOCAL
mirror_address NULL NULL

In dit geval worden alle dialoogvensters die in de AdventureWorks2008R2 database zijn gemaakt, aan een dienst in de huidige instance geleverd. Bovendien worden alle dialogen die van buiten de instantie binnenkomen, afgeleverd bij een service in de huidige instantie.

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2, AutoCreatedLocal is de enige route in AdventureWorks2008R2.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Het proces is hetzelfde voor gesprekken die van buiten de instantie binnenkomen. Voor gesprekken die van buiten het exemplaar binnenkomen, is AutoCreatedLocal de enige route in msdb.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 2: Netwerkroute naar een specifieke service

In dit voorbeeld wordt de gebruikelijke routeringsconfiguratie voor services buiten het huidige exemplaar beschreven. Als u een route naar een externe service wilt configureren, maakt u de route in de database waarmee het gesprek wordt gestart. In dit voorbeeld AdventureWorks2008R2 bevat een route voor de service OrderParts. De route bevat een netwerkadres voor de OrderParts service.

Rubriek 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

In dit geval komen alle dialoogvensters die in de AdventureWorks2008R2 database zijn gemaakt voor de dienst OrderParts overeen met de route OrderPartsRoute. Service Broker verzendt deze berichten naar het netwerkadres TCP://host2.Adventure-Works.com:4022/. Alle andere gesprekken worden geleverd aan diensten in dezelfde instantie.

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2 met een doelservice van OrderParts, bevat de set overeenkomende routes OrderPartsRoute, omdat deze route exact overeenkomt met de servicenaam. OrderPartsRoute is de enige route binnen de set van overeenkomende routes, dus kiest Service Broker die route.

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2 naar een andere doelservice, bevat de set overeenkomende routes AutoCreatedLocal. Omdat dit de enige route in de set overeenkomende routes is, kiest Service Broker die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, markeert Service Broker het gesprek DELAYED.

Voor gesprekken die van buiten het exemplaar binnenkomen, is AutoCreatedLocal de enige route in msdb.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 3: Netwerkroute naar een gespiegelde database

In dit voorbeeld wordt de gebruikelijke routeringsconfiguratie beschreven voor een service die wordt gehost door een gespiegelde database buiten het huidige exemplaar. Als u een route naar een externe service wilt configureren, maakt u de route in de database waarmee het gesprek wordt gestart. In dit voorbeeld AdventureWorks2008R2 bevat een route voor de service OrderParts. De route bevat zowel een netwerkadres als een spiegeladres voor de OrderParts service.

Rubriek 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

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2 met een doelservice van OrderParts, bevat de set overeenkomende routes OrderPartsRoute, omdat deze route exact overeenkomt met de servicenaam. OrderPartsRoute is de enige route binnen de set van overeenkomende routes, dus kiest Service Broker die route. Service Broker controleert zowel het adres als het gespiegelde adres om te bepalen welke partner de principal is en verzendt vervolgens het bericht naar de principal.

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2 naar een andere doelservice, bevat de set overeenkomende routes AutoCreatedLocal. Omdat dit de enige route in de set overeenkomende routes is, kiest Service Broker die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, markeert Service Broker het gesprek DELAYED.

Voor gesprekken die van buiten het exemplaar binnenkomen, is AutoCreatedLocal de enige route in msdb.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 4: Netwerkroute naar alle externe services

In dit voorbeeld worden berichten van services AdventureWorks2008R2 naar een ander exemplaar verzonden, tenzij de service in het lokale exemplaar bestaat. Berichten voor services die zich niet in het lokale exemplaar bevinden, gaan naar hetzelfde netwerkadres. Deze configuratie kan nuttig zijn als het SQL Server-exemplaar op dat netwerkadres het doorsturen van berichten uitvoert.

In dit voorbeeld bevat de AdventureWorks2008R2 database de AutoCreatedLocal route en een route naar het adres TCP://forwarding.Adventure-Works.com:4022/.

Rubriek 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

Voor gesprekken die zijn aangemaakt in AdventureWorks2008R2, bevat de set overeenkomende routes zowel AutoCreatedLocal als ExternalRoute, omdat de externe servicenaam en het brokerexemplaar voor beide routes hetzelfde is. Service Broker moet kiezen tussen deze twee routes. Service Broker kiest routes met het adres 'LOCAL' vóór routes die een netwerkadres opgeven, dus Service Broker kiest AutoCreatedLocaleerst. Als de doelservice in het lokale exemplaar bestaat, gebruikt Service Broker deze route en levert het bericht aan die service. Als de doelservice echter niet bestaat in het lokale exemplaar, kiest Service Broker voor ExternalRoute.

Voor gesprekken die van buiten het exemplaar binnenkomen, is AutoCreatedLocal de enige route in msdb.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 5: Netwerkroute naar verschillende exemplaren van een service

In dit voorbeeld ziet u een routeringsconfiguratie waarbij twee verschillende netwerkadressen verschillende exemplaren van dezelfde service hosten. Deze configuratie kan handig zijn voor een taakverdelingsconfiguratie.

In dit voorbeeld bevat de AdventureWorks2008R2 database de AutoCreatedLocal route en routes naar de service BalancedService.

Rubriek 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

Voor gesprekken die in de AdventureWorks2008R2 database zijn gemaakt voor de service BalancedService die geen Service Broker-id opgeeft, bevat de set overeenkomende routes ofwel BalancedRouteOne of BalancedRouteTwo. Omdat de routes verschillende Service Broker-id's bevatten, selecteert het verwerkingsproces willekeurig een Service Broker-id en komt die route overeen. Omdat slechts één route overeenkomt, kiest Service Broker die route voor het gesprek. Het resultaat is dat sommige gesprekken worden gerouteerd naar TCP://server1.Adventure-Works.com:4022/, en andere gesprekken worden doorgestuurd naar TCP://server2.Adventure-Works.com:4022/. Zodra Service Broker echter een bevestiging voor een bericht in een gesprek ontvangt, gebruikt Service Broker de Service Broker-id in de bevestiging voor andere berichten in het gesprek. Zodra de eerste bevestiging is ontvangen, worden alle toekomstige berichten in het gesprek gerouteerd met behulp van de Service Broker-id in de bevestiging.

Voor gesprekken die in de AdventureWorks2008R2 database zijn gemaakt met de service BalancedService die een van de Service Broker-id's in de routeringstabel opgeeft, bevat de set overeenkomende routes de route die overeenkomt met de Service Broker-id. Het gesprek wordt doorgestuurd naar het adres dat in de route met die Service Broker-id is aangegeven.

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2 naar een andere doeldienst, bevat de set overeenkomende routes alleen AutoCreatedLocal. Service Broker kiest die specifieke route. Als de service voor het bericht niet bestaat in het lokale exemplaar, markeert Service Broker het gesprek DELAYED.

Voor gesprekken die van buiten het exemplaar binnenkomen, is AutoCreatedLocal de enige route in msdb.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 6: Doorsturen van berichten voor een specifieke service

In dit voorbeeld worden berichten van buiten het lokale exemplaar doorgestuurd naar de service ElsewhereService naar het netwerkadres TCP://elsewhere.Adventure-Works.com:4022/. Voor alle andere services levert Service Broker de berichten aan een service in de locale instantie of wordt het gesprek DELAYED gemarkeerd als de service niet bestaat in de locale instantie.

Rubriek 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

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2, AutoCreatedLocal is de enige route in AdventureWorks2008R2.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, markeert Service Broker het gesprek DELAYED. Een gesprek dat in AdventureWorks2008R2 is gemaakt naar de service ElsewhereService wordt niet gerouteerd naar TCP://elsewhere.Adventure-Works.com:4022/.

Voor gesprekken die van buiten het exemplaar binnenkomen naar de service ElsewhereService, komt de route ForwardingRoute precies overeen met de servicenaam. ForwardingRoute Is daarom de enige route in de set overeenkomende routes en Service Broker kiest die route wanneer het doorsturen van berichten is ingeschakeld. Service Broker kiest deze route, zelfs als het lokale exemplaar de service ElsewhereServicebevat. Als het doorsturen van berichten is uitgeschakeld, wordt het bericht door Service Broker gestopt.

Voor gesprekken die van buiten het exemplaar naar alle andere services binnenkomen, AutoCreatedLocal is dit de enige overeenkomende route in msdb.sys.routes. Service Broker kiest die specifieke route. Als de service voor het bericht niet bestaat in het lokale exemplaar, wordt het bericht verwijderd.

Voorbeeld 7: Berichten doorsturen voor alle services die niet in de instantie aanwezig zijn

In dit voorbeeld worden berichten van buiten het lokale exemplaar naar een ander exemplaar verzonden, tenzij de service in het lokale exemplaar bestaat. Berichten voor alle externe services gaan naar hetzelfde netwerkadres. Deze configuratie kan handig zijn voor het doorsturen van berichten.

Rubriek 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

Voor gesprekken die zijn gemaakt in AdventureWorks2008R2, AutoCreatedLocal is de enige route in AdventureWorks2008R2.sys.routes. Deze route is de enige route in de set overeenkomende routes en Service Broker kiest die route. Als de service voor het bericht niet bestaat in het lokale exemplaar, markeert Service Broker het gesprek DELAYED.

Voor gesprekken die van buiten de database binnenkomen, bevat de set overeenkomende routes beide AutoCreatedLocal en ForwardingRoute, omdat beide routes dezelfde externe servicenaam en Service Broker-id opgeven. Service Broker moet kiezen tussen deze twee routes. Service Broker kiest routes met het adres 'LOCAL' vóór routes die een netwerkadres opgeven, dus Service Broker kiest AutoCreatedLocaleerst. Als de doelservice in het lokale exemplaar bestaat, gebruikt Service Broker deze route en levert het bericht aan die service. Als de doelservice echter niet bestaat in het lokale exemplaar en het doorsturen van berichten is ingeschakeld, kiest ForwardingRouteService Broker. Als het doorsturen van berichten niet is ingeschakeld, wordt het bericht door Service Broker verwijderd als de doelservice niet bestaat in het lokale exemplaar.