Service Broker 1 base...

 

--------------------------------------------------------------------------

-- Scénario 1 : simple

--------------------------------------------------------------------------

USE master

DROP DATABASE "Test SB"

CREATE DATABASE "Test SB"

USE "Test SB"

 

-- création des queues

CREATE QUEUE q1

CREATE QUEUE q2

-- création des services

CREATE SERVICE s1 ON QUEUE q1 ([DEFAULT])

CREATE SERVICE s2 ON QUEUE q2 ([DEFAULT])

 

-- envoie d'un message

DECLARE @x UNIQUEIDENTIFIER

BEGIN DIALOG @x

FROM SERVICE s1 TO SERVICE 's2'

;

SEND ON CONVERSATION @x ('Bonjour')

SELECT * FROM q2

-- Q2 vide ?!?

SELECT * FROM q1

SELECT * FROM sys.transmission_queue

 

 

 

 

 

 

 

-- Pb de cryptage !

 

CREATE MASTER KEY

ENCRYPTION BY PASSWORD ='A&strong#0ne!'

-- 2e envoi d'un message

DECLARE @x UNIQUEIDENTIFIER

BEGIN DIALOG /* CONVERSATION */ @x

FROM SERVICE s1 TO SERVICE 's2'

-- LIFETIME = <durée en sec> defaut : maxint

-- WITH ENCRYPTION=OFF defaut : ON

;

SEND ON CONVERSATION @x ('Bonjour')

-- END CONVERSATION @x

SELECT * FROM q2

--

-- l'aller ...

--

DECLARE @m VARBINARY(MAX)

DECLARE @h UNIQUEIDENTIFIER;

RECEIVE TOP(1)

@m=message_body,

@h=conversation_handle

FROM q2

PRINT CONVERT (VARCHAR(MAX),@m);

SEND ON CONVERSATION @h ('Bien reçu')

END CONVERSATION @h

-- Combien de messages dans Q1 ?

SELECT * FROM q1

 

-- et retour !

DECLARE @m VARBINARY(max)

DECLARE @h UNIQUEIDENTIFIER;

RECEIVE TOP(1)

@m=message_body,

@h=conversation_handle

FROM q1

PRINT CONVERT (VARCHAR (MAX),@m);

END CONVERSATION @h

 

 

 

 

--------------------------------------------------------------------------

-- activation /désactivation ?

--

SELECT name, service_broker_guid,is_broker_enabled

FROM sys.databases

ALTER DATABASE "Test SB"

SET disable_broker

ALTER DATABASE "Test SB"

SET enable_broker