Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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
alter 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
go
-- Create a send and a receive queue
create queue TestSendQueue
create queue TestReceiveQueue
go
-- 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)
go
-- 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)
go
-- 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
go
-- 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)) + ')')
go
-- Now receive from the queue
receive convert(nvarchar(max), message_body)
from TestReceiveQueue
go
Good luck!