Leçon 1 : création des objets de conversation dans la base de données
Dans cette leçon, vous allez apprendre à créer 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
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Puis, exécutez-le pour vous assurer que Service Broker est activé dans la base de données AdventureWorks et basculez le contexte vers la base de données.
USE master; GO ALTER DATABASE AdventureWorks SET ENABLE_BROKER; GO USE AdventureWorks; 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. Dans la mesure où les objets Service Broker sont souvent référencés dans plusieurs instances du Moteur de base de données, la plupart portent des noms au format URI. Ainsi, leur unicité est garantie sur plusieurs ordinateurs. Ces deux types de messages spécifient que Service Broker valide le fait que les messages sont des documents XML corrects, sans pour autant valider le code XML 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. Puis, 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 de type //AWDB/InternalAct/RequestMessage de l'initiateur à la cible, et des messages de 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 et le service de la cible
Copiez et collez le code suivant dans une fenêtre de l'éditeur de requête. Puis, exécutez-le 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. L'instruction CREATE SERVICE spécifie également que seules les conversations qui utilisent le //AWDB/InternalAct/SampleContract créé précédemment peuvent utiliser le service comme service de la 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 de l'éditeur de requête. Puis, exécutez-le 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
Étapes suivantes
Vous venez de configurer AdventureWorks pour prendre en charge une conversation entre //AWDB/InternalAct/InitiatorService et //AWDB/InternalAct/TargetService. Ensuite, vous allez créer une procédure stockée pour prendre en charge l'activation interne sur la file d'attente cible. Consultez Leçon 2 : création d'une procédure d'activation interne.