Service Broker-objecten maken

Van toepassing op:SQL ServerAzure SQL Managed Instance

Een toepassing maakt gebruik van Service Broker door Transact-SQL instructies uit te voeren die worden uitgevoerd op Service Broker-objecten die zijn gedefinieerd in een database. In deze sectie worden algemene overwegingen beschreven bij het maken van de Service Broker-objecten voor een toepassing.

Overzicht

Service Broker-objecten definiëren de metagegevens en opslag voor een specifieke set taken:

  • Berichttypen definiëren de gegevens die in een gesprek worden uitgewisseld.

  • Contracten definiëren taken. Elk contract geeft de berichttypen op die in een bepaald gesprek kunnen worden gebruikt en aan welke kant van het gesprek het bericht kan worden verzonden.

  • In een wachtrij worden binnenkomende berichten voor een service opgeslagen.

  • Een service vertegenwoordigt een gerelateerde set zakelijke taken. De naam van de service wordt ook gebruikt om de wachtrij voor de service te vinden.

Een contract is afhankelijk van een of meer berichttypen. Een service is afhankelijk van een wachtrij en kan afhankelijk zijn van een of meer contracten. Daarom worden contracten gemaakt na berichttypen en verwijderd vóór berichttypen. Services worden gemaakt na wachtrijen en contracten en verwijderd vóór wachtrijen en contracten.

Objecten maken voor een service

De procedure voor het maken van een service volgt hetzelfde basisoverzicht, ongeacht of uw service een initiërende service, een doelservice of beide is.

De definitie van een service specificeert de contracten waarvoor de service een doel kan zijn. Een toepassing kan daarentegen een service gebruiken om een gesprek te starten dat gebruikmaakt van een contract dat is gedefinieerd in de database. Service Broker hanteert deze benadering om de algemene regel af te dwingen dat een service alleen berichten mag ontvangen die de toepassing kan verwerken. Om ervoor te zorgen dat de toepassing geen berichten van een willekeurig of onbekend type ontvangt, accepteert Service Broker alleen een nieuw dialoogvenster als het dialoogvenster een contract volgt dat is opgegeven in de service. Een initiërende service specificeert het contract dat moet worden gebruikt wanneer het gesprek begint, dus een initiërende service hoeft het contract niet op te nemen in de servicedefinitie.

Ga als volgt te werk om de objecten voor een service te maken:

  1. Maak berichttypen die de berichten definiëren die door uw service worden gebruikt om eventuele vereiste communicatie uit te voeren. U kunt deze typen zelf definiëren of scripts verkrijgen om de typen te maken van de maker van de service waarmee uw service communiceert. U slaat deze stap over wanneer de database al de berichttypen bevat die uw service nodig heeft.

  2. Maak een of meer contracten die de structuur definiëren van de gesprekken waarin deze service kan deelnemen. U kunt dit contract zelf definiëren of scripts verkrijgen om het contract te maken van de maker van de service waarmee uw service zal communiceren. U slaat deze stap over wanneer de database al de contracten bevat die uw service nodig heeft.

  3. Maak een wachtrij. Service Broker gebruikt deze wachtrij om binnenkomende berichten voor de service te ontvangen en op te slaan. Zie CREATE QUEUE voor meer informatie over het maken van wachtrijen. Elke service moet een wachtrij hebben. Om programmering en beheer eenvoudiger te maken, maakt elke service doorgaans gebruik van een wachtrij die is toegewezen aan die service. Als voor uw service bewaarperiode van berichten is vereist, geeft u berichtretentie op voor de wachtrij.

  4. Een service maken. De servicedefinitie geeft de wachtrij op die de service gebruikt en de contracten waarvoor deze service het doel is.

In de meeste gevallen maakt u de doelservice en gebruikt u vervolgens de contracten en berichttypen die voor de doelservice zijn gemaakt om een initiërende service te maken. In sommige gevallen kunt u echter een doelservice maken voor een initiërende service die al is gedefinieerd. In deze gevallen gebruikt de doelservice de berichttypen en contracten die de initiërende service gebruikt. Als u bijvoorbeeld een doelservice maakt om gebeurtenismeldingen te ontvangen, gebruikt u het contract https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, omdat dit het contract is dat de initiërende service gebruikt.

Objectdefinities beheren

U wordt aangeraden een Transact-SQL script te maken voor de Service Broker-objecten die door uw toepassing worden gebruikt. Met dit Transact-SQL script kunt u eenvoudig verwijzen naar de specifieke kenmerken van uw Service Broker-objecten. Het script biedt ook een manier om de service op een ander systeem te implementeren of om de service indien nodig opnieuw te maken.

Als uw toepassing berichten moet verzenden tussen SQL Server-exemplaren, raden we u aan één script te maken dat de berichttypen en contracten voor de service definieert, en een tweede script waarmee de wachtrij en de service worden gedefinieerd. Het eerste script definieert de interface voor de service, de objecten die gebruikelijk zijn voor zowel de initiërende service als de doelservice. Het tweede script definieert de servicenaam en de wachtrij, de objecten voor één kant van het gesprek.

In deze sectie

Article Description
Service Broker-berichttypen maken Beschrijft berichttypen en hoe ze worden gebruikt.
Service Broker-contracten maken Beschrijft contracten en hoe ze worden gebruikt.
Service Broker-wachtrijen maken Beschrijft wachtrijen en hoe ze worden gebruikt.
Service Broker-services maken Beschrijft services en hoe ze worden gebruikt.
Service Broker-objecten een naam geven Hierin worden overwegingen beschreven voor het benoemen van servicebrokerobjecten.
Voorbeeld van servicescript Beschrijft een Transact-SQL codevoorbeeld en definieert een service.