Lezen in het Engels

Delen via


Service Broker

van toepassing op:SQL ServerAzure SQL Managed Instance

SQL Server Service Broker biedt systeemeigen ondersteuning voor berichten en wachtrijen in de SQL Server Database Engine en Azure SQL Managed Instance. Ontwikkelaars kunnen eenvoudig geavanceerde toepassingen maken die gebruikmaken van de database-engineonderdelen om te communiceren tussen verschillende databases en gedistribueerde en betrouwbare toepassingen bouwen.

Wanneer servicebroker gebruiken

Gebruik Service Broker-onderdelen om systeemeigen asynchrone berichtverwerkingsfuncties in de database te implementeren. Toepassingsontwikkelaars die Service Broker gebruiken, kunnen gegevensworkloads over verschillende databases distribueren zonder complexe communicatie en interne berichten te programmeren. Service Broker vermindert het ontwikkelen en testen van werk omdat Service Broker de communicatiepaden verwerkt in de context van een gesprek. Het verbetert ook de prestaties. Front-end databases die websites ondersteunen, kunnen bijvoorbeeld informatie vastleggen en intensieve processen in de wachtrij zetten in back-end databases. Service Broker zorgt ervoor dat alle taken worden beheerd in de context van transacties om betrouwbaarheid en technische consistentie te garanderen.

Overzicht

Service Broker is een framework voor berichtbezorging waarmee u systeemeigen in-databaseservicegerichte toepassingen kunt maken. In tegenstelling tot klassieke queryverwerkingsfuncties die voortdurend gegevens uit de tabellen lezen en verwerken tijdens de levenscyclus van de query, hebt u in servicegerichte toepassing databaseservices die de berichten uitwisselen. Elke service heeft een wachtrij waarin de berichten worden geplaatst totdat ze worden verwerkt.

Service Broker-

De berichten in de wachtrijen kunnen worden opgehaald met behulp van de opdracht Transact-SQL RECEIVE of door de activeringsprocedure die wordt aangeroepen wanneer het bericht in de wachtrij binnenkomt.

Services maken

Databaseservices worden gemaakt met behulp van de CREATE SERVICE Transact SQL-instructie. De service kan worden gekoppeld aan de berichtenwachtrij die wordt gemaakt met behulp van de instructie CREATE QUEUE:

SQL
CREATE QUEUE dbo.ExpenseQueue;
GO
CREATE SERVICE ExpensesService
    ON QUEUE dbo.ExpenseQueue; 

Berichten verzenden

Berichten worden verzonden in het gesprek tussen de services met behulp van de instructie SEND Transact-SQL. Een gesprek is een communicatiekanaal dat tot stand is gebracht tussen de services met behulp van de BEGIN DIALOG Transact-SQL-verklaring.

SQL
DECLARE @dialog_handle UNIQUEIDENTIFIER;

BEGIN DIALOG @dialog_handle  
FROM SERVICE ExpensesClient  
TO SERVICE 'ExpensesService';  
  
SEND ON CONVERSATION @dialog_handle (@Message) ;  

Het bericht wordt verzonden naar de ExpensesService en in dbo.ExpenseQueuegeplaatst. Omdat er geen activeringsprocedure aan deze wachtrij is gekoppeld, blijft het bericht in de wachtrij totdat iemand het leest.

Berichten verwerken

De berichten die in de wachtrij worden geplaatst, kunnen worden geselecteerd met behulp van een standaardquery SELECT. De instructie SELECT wijzigt de wachtrij niet en verwijdert de berichten. Als u de berichten uit de wachtrij wilt lezen en ophalen, kunt u de instructie RECEIVE Transact-SQL gebruiken.

SQL
RECEIVE conversation_handle, message_type_name, message_body  
FROM ExpenseQueue; 

Zodra u alle berichten uit de wachtrij hebt verwerkt, moet u het gesprek sluiten met behulp van de instructie END CONVERSATION Transact-SQL.

Waar is de documentatie voor Service Broker?

De referentiedocumentatie voor Service Broker is opgenomen in de SQL Server-documentatie. Deze referentiedocumentatie bevat de volgende secties:

Zie de eerder gepubliceerde documentatie voor Service Broker-concepten en voor ontwikkelings- en beheertaken. Deze documentatie wordt niet gereproduceerd in de SQL Server-documentatie vanwege het kleine aantal wijzigingen in Service Broker in recente versies van SQL Server.

Wat is er nieuw in Service Broker?

Service Broker en Azure SQL Managed Instance

Berichtuitwisseling met de servicebroker tussen exemplaren van Azure SQL Managed Instance en tussen SQL Server en Azure SQL Managed Instance is momenteel in openbare preview beschikbaar.

  • CREATE ROUTE: de opgegeven poort moet 4022 zijn. Zie ROUTE AANMAKEN.
  • ALTER ROUTE: de opgegeven poort moet 4022 zijn. Zie ALTER ROUTE.

Transportbeveiliging wordt ondersteund, dialoogbeveiliging niet.

  • CREATE REMOTE SERVICE BINDING wordt niet ondersteund.

Service Broker is standaard ingeschakeld en kan niet worden uitgeschakeld. De volgende ALTER DATABASE-opties worden niet ondersteund:

  • ENABLE_BROKER
  • DISABLE_BROKER

Er zijn geen belangrijke wijzigingen geïntroduceerd in SQL Server 2019 (15.x). De volgende wijzigingen zijn geïntroduceerd in SQL Server 2012 (11.x).

Berichten kunnen worden verzonden naar meerdere doelservices (multicast)

De syntaxis van de SEND (Transact-SQL) instructie is uitgebreid om multicast mogelijk te maken door meerdere gespreksgrepen te ondersteunen.

Wachtrijen onthullen de wachttijd van het bericht

Wachtrijen hebben een nieuwe kolom, message_enqueue_time, die laat zien hoe lang een bericht in de wachtrij staat.

Verwerking van gifberichten kan worden uitgeschakeld

De CREATE QUEUE (Transact-SQL) en ALTER QUEUE (Transact-SQL) instructies hebben nu de mogelijkheid om de verwerking van gifberichten in of uit te schakelen door de component toe te voegen, POISON_MESSAGE_HANDLING (STATUS = ON | OFF). De catalogusweergave sys.service_queues bevat nu de kolom is_poison_message_handling_enabled om aan te geven of gifbericht is ingeschakeld of uitgeschakeld.

AlwaysOn-ondersteuning in Service Broker

Zie Service Broker met AlwaysOn-beschikbaarheidsgroepen (SQL Server)voor meer informatie.

Volgende stappen

Het meest voorkomende gebruik van Service Broker is voor gebeurtenismeldingen. Leer hoe te het implementeren van gebeurtenismeldingen, het configureren van dialoogvensterbeveiligingof meer informatie te krijgen.