--验证数据库是否能启用Service Broker
SELECT DATABASEPROPERTYEX('DBName','IsBrokerEnabled')
SELECT * FROM sys.databases
WHERE name = 'DBName'
AND is_broker_enabled = 1--查询Service Broker是否可用
ALTER DATABASE DBName SET ENABLE_BROKER--启动Service Broker
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
CREATE MESSAGE TYPE [HelloWorldRequest] --消息类型为XML时需验证VALIDATION = WELL_FORMED_XML
CREATE MESSAGE TYPE [HelloWorldResponse] --消息类型为XML时需验证VALIDATION = WELL_FORMED_XML
CREATE CONTRACT [HelloWorldContract]
( [HelloWorldRequest] SENT BY initiator,
[HelloWorldResponse] SENT BY target)
CREATE QUEUE [HelloWorldTargetQueue]
CREATE QUEUE [HelloWorldInitiatorQueue]
CREATE SERVICE [HelloWorldRequestService] ON QUEUE [HelloWorldTargetQueue]
( [HelloWorldContract] )
CREATE SERVICE [HelloWorldResponseService] ON QUEUE [HelloWorldInitiatorQueue]
--drop SERVICE [HelloWorldRequestService]
--drop SERVICE [HelloWorldResponseService]
--drop QUEUE [HelloWorldTargetQueue]
--drop QUEUE [HelloWorldInitiatorQueue]
--drop CONTRACT [HelloWorldContract]
--drop MESSAGE TYPE [HelloWorldRequest]
--drop MESSAGE TYPE [HelloWorldResponse]
--开始 Hello World 服务的对话
SET NOCOUNT ON
DECLARE @conversationHandle uniqueidentifier
Begin Transaction
BEGIN DIALOG @conversationHandle
FROM SERVICE [HelloWorldResponseService]
TO SERVICE 'HelloWorldRequestService'
ON CONTRACT [HelloWorldContract]
WITH ENCRYPTION = OFF, LIFETIME = 60;
-- 发送消息
SEND ON CONVERSATION @conversationHandle
MESSAGE TYPE [HelloWorldRequest] (N'Hello World')
--消息类型为XML时如:(N'<root>Hello World</root>')
commit
select * from [HelloWorldTargetQueue]
select cast(message_body as nvarchar(MAX)) from [HelloWorldTargetQueue]
select * from sys.transmission_queue--查询Service Broker消息失败原因
END CONVERSATION @conversation_handle WITH CLEANUP