-- ============================================= --启用 Broker USE master; GO ALTER DATABASE DEV_AMS SET ENABLE_BROKER; GO --或者 ALTER DATABASE 目标数据库 SET NEW_BROKER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE DEV_AMS SET ENABLE_BROKER; GO -- ============================================= --1.消息类型:创建消息类型 CREATE MESSAGE TYPE CreateUserMessage VALIDATION = None GO --2.约定:创建约定 CREATE CONTRACT CreateUserContract (CreateUserMessage SENT BY ANY);--多个消息逗号隔开 GO --3.队列:创建队列 --发送队列、接收队列 CREATE QUEUE CreateUserSendQueue WITH STATUS=ON GO CREATE QUEUE CreateUserReceiveQueue WITH STATUS=ON GO --4.服务:创建服务 --发送服务,接收服务 CREATE SERVICE CreateUserSendService ON QUEUE CreateUserSendQueue (CreateUserContract); GO CREATE SERVICE CreateUserReceiveService ON QUEUE CreateUserReceiveQueue (CreateUserContract); GO -- ============================================= --1.测试发送 --Dialog会话用于服务间信息交换 DECLARE @Init_Handler uniqueidentifier DECLARE @UserMsg nvarchar(100) SET @UserMsg='张三入职' --BEGIN TRANSACTION; BEGIN DIALOG CONVERSATION @Init_Handler FROM SERVICE CreateUserSendService TO SERVICE 'CreateUserReceiveService' ON CONTRACT CreateUserContract WITH ENCRYPTION=OFF;--分号结束 --发送 SEND ON CONVERSATION @Init_Handler MESSAGE TYPE [CreateUserMessage] (@UserMsg); --COMMIT TRANSACTION; GO --2.测试接收 DECLARE @RecvReqDlgHandle uniqueidentifier DECLARE @RecvReqMsg nvarchar(100) DECLARE @RecvReqMsgName sysname BEGIN TRANSACTION WAITFOR ( RECEIVE TOP(1) @RecvReqDlgHandle = conversation_handle, @RecvReqMsg = message_body, @RecvReqMsgName = message_type_name FROM CreateUserReceiveQueue ), TIMEOUT 1000; IF @RecvReqMsgName = N'CreateUserMessage' BEGIN -- 定义准备用于返回的消息. DECLARE @ReplyMsg NVARCHAR(100); -- 简单设置. SELECT @ReplyMsg = '~' + @RecvReqMsg + '~'; -- 调试输出. PRINT '我接收到:' + @RecvReqMsg + '; 我将反馈:' + @ReplyMsg; -- 发送反馈消息. SEND ON CONVERSATION @RecvReqDlgHandle MESSAGE TYPE [CreateUserMessage] (@ReplyMsg); END CONVERSATION @RecvReqDlgHandle; END; COMMIT TRANSACTION; GO --3 select * from [dbo].[CreateUserSendQueue] select * from [dbo].[CreateUserReceiveQueue]
资源:
https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/bb839495%28v%3dsql.100%29