Leçon 1 : Créer les objets de conversation de base

S’applique à :SQL ServerAzure SQL Managed Instance

Dans cette leçon, découvrez comment générer tous les objets qui permettent à une base de données de prendre en charge une conversation dans la base de données.

Procédures

Activer Service Broker et basculer vers la base de données AdventureWorks

Remarque

Les exemples de code de cet article ont été testés à l’aide de l’exemple de base de données AdventureWorks2025, que vous pouvez télécharger à partir de la Microsoft SQL Server Samples and Community Projects page d’accueil.

Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Ensuite, exécutez-le pour vous assurer que Service Broker est activé dans la base de données AdventureWorks2025 et basculez le contexte vers la base de données.

USE master;
GO

ALTER DATABASE AdventureWorks2022
    SET ENABLE_BROKER;
GO

USE AdventureWorks2022;
GO

Créer les types de messages

Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Puis, exécutez-le pour créer les types de messages de la conversation. Comme les objets Service Broker sont souvent référencés dans plusieurs instances du Moteur de base de données, la plupart des objets Service Broker portent des noms dans un format URI. Cela permet de s’assurer qu’ils sont uniques sur plusieurs ordinateurs. Ces deux types de messages spécifient que Service Broker valide uniquement que les messages sont des documents XML bien formés et que le code XML n’est pas validé par rapport à un schéma spécifique.

CREATE MESSAGE TYPE [//AWDB/InternalAct/RequestMessage]
    VALIDATION = WELL_FORMED_XML;

CREATE MESSAGE TYPE [//AWDB/InternalAct/ReplyMessage]
    VALIDATION = WELL_FORMED_XML;
GO

Créer le contrat

Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Ensuite, exécutez-le pour créer le contrat de la conversation. Le contrat spécifie que les conversations qui l’utilisent doivent envoyer des messages du type AWDB/InternalAct/RequestMessage de l’initiateur à la cible et des messages du type AWDB/InternalAct/ReplyMessage de la cible à l’initiateur.

CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
    ([//AWDB/InternalAct/RequestMessage] SENT BY INITIATOR,
    [//AWDB/InternalAct/ReplyMessage] SENT BY TARGET);
GO

Créer la file d'attente cible et le service cible

Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer la file d’attente et le service utilisés pour la cible. Les files d'attente étant référencées à partir de la même base de données comme des tables et des vues, leurs noms sont mis en forme comme des noms de table ou de vue. L’instruction CREATE SERVICE associe le service à TargetQueueIntAct. Par conséquent, tous les messages envoyés au service sont reçus dans TargetQueueIntAct. Il CREATE SERVICE spécifie également que seules les conversations qui utilisent AWDB/InternalAct/SampleContract créées précédemment peuvent utiliser le service en tant que service cible.

CREATE QUEUE TargetQueueIntAct;

CREATE SERVICE [//AWDB/InternalAct/TargetService]
    ON QUEUE TargetQueueIntAct
    ([//AWDB/InternalAct/SampleContract]);
GO

Créer la file d’attente et le service de l’initiateur

Copiez et collez le code suivant dans une fenêtre éditeur de requête, puis exécutez-la pour créer la file d’attente et le service utilisés pour l’initiateur. Comme aucun nom de contrat n'est spécifié, aucun autre service ne peut utiliser ce service comme service de la cible.

CREATE QUEUE InitiatorQueueIntAct;

CREATE SERVICE [//AWDB/InternalAct/InitiatorService]
    ON QUEUE InitiatorQueueIntAct;
GO

Étape suivante

Vous avez correctement configuré AdventureWorks2025 pour prendre en charge une conversation entre le //AWDB/InternalAct/InitiatorService et le //AWDB/InternalAct/TargetService.