Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure 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.