Delen via


Doorsturen van Service Broker-berichten

Van toepassing op:SQL ServerAzure SQL Managed Instance

Met Service Broker-berichten doorsturen kan een exemplaar van SQL Server berichten van buiten het exemplaar accepteren en deze berichten verzenden naar een ander exemplaar.

Een beheerder kan het doorsturen van berichten gebruiken voor:

  • Connectiviteit bieden tussen servers in verschillende vertrouwensdomeinen.

  • Vereenvoudig het beheer door één gecentraliseerd exemplaar te maken dat de routeringsinformatie voor een domein bevat.

  • Werk verdelen over verschillende instanties.

Wanneer doorsturen is ingeschakeld, bepaalt de routeringstabel in msdb.sys.routes of een bericht dat afkomstig is van een ander exemplaar wordt doorgestuurd. Als het adres voor de overeenkomende route niet LOCALis, stuurt SQL Server het bericht door naar het opgegeven adres. Anders wordt het bericht lokaal bezorgd.

Elk Service Broker-bericht bevat een maximale levensduur en een telling van het aantal keren dat het bericht is doorgestuurd. Wanneer een instantie het bericht doorstuurt, verhoogt die instantie de telling in het bericht. Als het bericht de maximale levensduur overschrijdt, gooit de doorstuurinstantie het weg. Deze strategie helpt problemen te voorkomen in situaties waarin een routeringslus kan bestaan.

Doorsturen en betrouwbare levering

Een instance die een bericht doorstuurt, bevestigt het bericht niet aan de afzender. Alleen de uiteindelijke bestemming bevestigt het bericht. Als de afzender na een bepaalde periode geen bevestiging van de bestemming ontvangt, probeert de afzender het bericht opnieuw.

Een exemplaar dat het doorsturen van berichten uitvoert, hoeft geen doorgestuurde berichten op te slaan. In plaats daarvan bevat SQL Server berichten die moeten worden doorgestuurd in het geheugen. De hoeveelheid geheugen die beschikbaar is voor het doorsturen van berichten, wordt opgegeven als onderdeel van de configuratie van het Service Broker-eindpunt. Met deze strategie kunt u efficiënt, staatloos berichten doorsturen. In het geval dat een exemplaar dat het doorsturen van berichten uitvoert mislukt, gaan er geen berichten verloren. Elk bericht wordt altijd bij de afzender bijgehouden totdat de uiteindelijke bestemming het bericht bevestigt, zoals beschreven in Service Broker-communicatieprotocollen.

De beheerweergave sys.dm_broker_forwarded_messages bevat informatie over berichten die momenteel worden doorgestuurd door het exemplaar. Een exemplaar bewaart geen berichten tijdens het doorsturen; deze berichten bestaan alleen in het geheugen. Het exemplaar dat het bericht heeft verzonden en het exemplaar dat het bericht ontvangt, blijven de berichten behouden. Het verzendende exemplaar verwijdert het bericht pas nadat het ontvangende exemplaar de ontvangst van het bericht bevestigt.

Beveiliging en doorsturen

Het doorsturen van Service Broker-berichten vereist niet dat het doorgestuurde bericht wordt ontsleuteld. Daarom moeten alleen de databases die deelnemen aan het gesprek dialoogvensterbeveiliging hebben geconfigureerd.

Omdat transportbeveiliging echter van toepassing is op de verbindingen tussen SQL Server-exemplaren moet elk SQL Server-exemplaar transportbeveiliging hebben die juist is geconfigureerd voor de exemplaren waarmee deze rechtstreeks communiceert. Als exemplaar A en exemplaar B bijvoorbeeld communiceren via een doorstuurinstantie, moeten zowel exemplaar A als exemplaar B correct geconfigureerde transportbeveiliging hebben voor de doorstuurinstantie. Omdat de exemplaren geen berichten rechtstreeks uitwisselen, moeten de exemplaren geen transportbeveiliging hebben geconfigureerd om met elkaar te communiceren.