SQL Service Broker: The Impatient Way!

For those of you who are interested in creating your first SQL Server 2005 Service Broker conversation but are impatient as I am, just grab the code below and give it a try:

— Enable service broker
database [YOUR_DB_NAME] set enable_broker

— Create a message type. You can also specify

  An XML schema to validate messages of this type:

create message type TestMessageType

       validation = none



— Create a send and a receive queue

create queue TestSendQueue

create queue TestReceiveQueue



— Now create a contract for our message type.

— A contract defines the message type

  which can be used by a service broker conversation.

  You can also specify who (initiator or target)

  can send messages of this message type

create contract TestContract

(TestMessageType sent by any)



— We now need services. A service is particular task that

   allows us to send and receive messages

create service TestSendService

on queue TestSendQueue (TestContract)


create service TestReceiveService

on queue TestReceiveQueue (TestContract)



— The next step is to start a dialog between

  services on a specific contract

declare @conversationHandle uniqueidentifier

begin dialog conversation @conversationHandle

       from service TestSendService

       to service ‘TestReceiveService’

       on contract TestContract

       with encryption = off



— Now try and send a message using the above conversation


— The first step is to get the conversation handle (it is important

—   to note that the same conversation handle returned

—   by the BEGIN DIALOG statement could also be used – just

—   drop the GO statement)

declare @conversationHandle uniqueidentifier

select @conversationHandle = conversation_handle

       from sys.conversation_endpoints

       where far_service = ‘TestReceiveService’;


send on conversation @conversationHandle

       message type TestMessageType

(N‘Test Message (‘ + cast(newid() as varchar(36)) + ‘)’)



— Now receive from the queue

receive convert(nvarchar(max), message_body)

from TestReceiveQueue


Good luck!

Comments (0)