SQL:SQL Broker
2019-10-17 11:46 huoit 阅读(467) 评论(0) 收藏 举报
-- ============================================= --启用 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
1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/xmai/
浙公网安备 33010602011771号