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