> Tech > Etablir le dialogue

Etablir le dialogue

Tech - Par iTPro - Publié le 24 juin 2010
email

Maintenant que tous les éléments sont définis, il est possible d'initialiser une conversation au sens Service Broker. Pour mener à bien cette tâche le Transact SQL s'est enrichi des termes suivants : BEGIN DIALOG CONVERSATION, MOVE DIALOG, GET CONVERSATION GROUP, END CONVERSATION, SEND, RECEIVE, GET TRANSMISSION STATUS, BEGIN CONVERSATION TIMER.

Etablir le dialogue

La syntaxe détaillée de ces différentes instructions est disponible dans la documentation en ligne de SQL Server 2005, mais une utilisation de quelques une de ces instructions est illustrée avec les exemples qui suivent. Dans l e premier exemple, illustré ci-dessous, l’initiateur et la cible de la conversation, respectivement service 1 et service 2 sont exécutés sur la même base et depuis le même script. Le message au format xml est transmis à la cible qui le récupère depuis la file d’attente associée au service cible, c’est à dire dans ce cas la file 2 qui est la file d’attente associée à sevice 2.

Cet exemple simple, permet de valider simplement l’ensemble de la structure mise en place et d’illustrer les instructions spécifiques au dialogue entre les 2 services.

begin tran
— Exemple d’utilisation de service broker
DECLARE @identifiantConversation UNIQUEIDENTIFIER
— Initier le dialogue
BEGIN DIALOG CONVERSATION @identifiantConversation
FROM SERVICE service1 TO SERVICE ‘service2’
ON CONTRACT ContratExemple WITH ENCRYPTION=OFF;
— Envoyer un message
declare @messagePersonnalise xml;
set @messagePersonnalise=
N'<client><nom>DUPONT</nom><prenom>Jean</prenom></client>’;
SEND ON CONVERSATION @identifiantConversation
MESSAGE TYPE MResultat (@messagePersonnalise);
commit tran;

begin tran
— Lire le message depuis la file d’attente
declare @messageRecu TABLE(
NomService NVARCHAR(512),
NomContrat NVARCHAR(256),
TypeMessage          NVARCHAR(256),
msg          NVARCHAR(MAX));
WAITFOR(
RECEIVE TOP (1) service_name, service_contract_name,message_type_name, message_ body
FROM file2
INTO @messageRecu
),TIMEOUT 10;
select * from @messageRecu;
— Mettre fin a la conversation
END CONVERSATION @identifiantConversation;

commit tran;

Téléchargez gratuitement cette ressource

*** SMART DSI *** VERSION NUMÉRIQUE

*** SMART DSI *** VERSION NUMÉRIQUE

Découvrez SMART DSI, la nouvelle revue du Décideur IT en version numérique. Analyses et dossiers experts pour les acteurs de la transformation numérique de l'entreprise, Gagnez en compétences et expertise IT Professionnelle avec le contenu éditorial premium de SMART DSI.

Tech - Par iTPro - Publié le 24 juin 2010