1. -- =============================================
  2. --启用 Broker
  3.  
  4. USE master;
  5. GO
  6.  
  7. ALTER DATABASE DEV_AMS
  8. SET ENABLE_BROKER;
  9. GO
  10.  
  11. --或者
  12. ALTER DATABASE 目标数据库
  13. SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
  14. GO
  15. ALTER DATABASE DEV_AMS
  16. SET ENABLE_BROKER;
  17. GO
  18. -- =============================================
  19. --1.消息类型:创建消息类型
  20. CREATE MESSAGE TYPE CreateUserMessage
  21. VALIDATION = None
  22. GO
  23.  
  24. --2.约定:创建约定
  25. CREATE CONTRACT CreateUserContract
  26. (CreateUserMessage SENT BY ANY);--多个消息逗号隔开
  27. GO
  28.  
  29. --3.队列:创建队列
  30. --发送队列、接收队列
  31. CREATE QUEUE CreateUserSendQueue
  32. WITH STATUS=ON
  33. GO
  34. CREATE QUEUE CreateUserReceiveQueue
  35. WITH STATUS=ON
  36. GO
  37.  
  38. --4.服务:创建服务
  39. --发送服务,接收服务
  40. CREATE SERVICE CreateUserSendService
  41. ON QUEUE CreateUserSendQueue
  42. (CreateUserContract);
  43. GO
  44.  
  45. CREATE SERVICE CreateUserReceiveService
  46. ON QUEUE CreateUserReceiveQueue
  47. (CreateUserContract);
  48. GO
  49.  
  50. -- =============================================
  51. --1.测试发送
  52. --Dialog会话用于服务间信息交换
  53. DECLARE @Init_Handler uniqueidentifier
  54. DECLARE @UserMsg nvarchar(100)
  55. SET @UserMsg='张三入职'
  56.  
  57. --BEGIN TRANSACTION;
  58.  
  59. BEGIN DIALOG CONVERSATION @Init_Handler
  60. FROM SERVICE CreateUserSendService
  61. TO SERVICE 'CreateUserReceiveService'
  62. ON CONTRACT CreateUserContract
  63. WITH
  64. ENCRYPTION=OFF;--分号结束
  65. --发送
  66. SEND ON CONVERSATION @Init_Handler
  67. MESSAGE TYPE [CreateUserMessage]
  68. (@UserMsg);
  69.  
  70. --COMMIT TRANSACTION;
  71. GO
  72.  
  73. --2.测试接收
  74.  
  75. DECLARE @RecvReqDlgHandle uniqueidentifier
  76. DECLARE @RecvReqMsg nvarchar(100)
  77. DECLARE @RecvReqMsgName sysname
  78.  
  79. BEGIN TRANSACTION
  80.  
  81. WAITFOR
  82. (
  83. RECEIVE TOP(1)
  84. @RecvReqDlgHandle = conversation_handle,
  85. @RecvReqMsg = message_body,
  86. @RecvReqMsgName = message_type_name
  87. FROM CreateUserReceiveQueue
  88. ), TIMEOUT 1000;
  89.  
  90. IF @RecvReqMsgName = N'CreateUserMessage'
  91. BEGIN
  92. -- 定义准备用于返回的消息.
  93. DECLARE @ReplyMsg NVARCHAR(100);
  94. -- 简单设置.
  95. SELECT @ReplyMsg = '~' + @RecvReqMsg + '~';
  96. -- 调试输出.
  97. PRINT '我接收到:' + @RecvReqMsg + '; 我将反馈:' + @ReplyMsg;
  98. -- 发送反馈消息.
  99. SEND ON CONVERSATION @RecvReqDlgHandle
  100. MESSAGE TYPE [CreateUserMessage] (@ReplyMsg);
  101. END CONVERSATION @RecvReqDlgHandle;
  102. END;
  103.  
  104. COMMIT TRANSACTION;
  105. GO
  106.  
  107. --
  108. select * from [dbo].[CreateUserSendQueue]
  109. select * from [dbo].[CreateUserReceiveQueue]

资源:

https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/bb839495%28v%3dsql.100%29

SQL:SQL Broker的更多相关文章

  1. BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息

    SQL Service Broker 是在SQL Server 2005中新增的功能.Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的 ...

  2. [SQL]SQL类似统计功能的sql文

    declare @t table(name varchar(),type int) insert into @t union all union all union all union all if ...

  3. pl/sql sql窗口允许输出和允许变量替换

    pl/sql sql窗口允许输出和允许变量替换 允许输出:类似在命令窗口中输入的 setserveroutput on; 允许变量替换:如果点击了这个,类似于执行 set define off命令 在 ...

  4. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  5. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  6. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  7. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  8. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  9. SQL SQL语句的增删改查

    一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdent ...

随机推荐

  1. lnmp+tp5安装纪要

    1: lnmp : https://lnmp.org/install.html  官网安装帮助 运行命令:wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz ...

  2. Ubuntu 更换下载源

    Ubuntu将下载官方源更换为国内源 由于某些原因,在国内更新软件都很慢,可以改源为国内源 1.备份原始文件 sudo cp /etc/apt/sources.list /etc/apt/source ...

  3. (十七)springMvc 对表单提交的日期以及JSON中的日期的参数绑定

    文章目录 前言 `Ajax`提交表单数据 `Ajax`提交`JSON` 格式数据 解决输出JSON乱码的问题 控制JSON输出日期格式 小记 前言 springMVC 提供强大的参数绑定功能,使得我们 ...

  4. Python22之lambda表达式

    一.Lambda表达式的概念和意义 lambda表达式有称为隐函数,它的定义过程由形参和要返回的表达式组成,它相对于一般函数而言具有以下优势: 1.免去了函数定义的过程,代码变得更加精简 2.省却函数 ...

  5. python 之 数据库(内置函数、流程控制、索引)

    10.17 内置函数 强调:mysql内置的函数只能在sql语句中使用 #数学函数 round(x,y) #返回参数x的四舍五入的有y位小数的值 rand() #返回0到1内的随机值,可以通过提供一个 ...

  6. C/C++中内存泄漏、内存溢出与野指针的解释与说明

    1.内存泄漏 内存泄漏是指我们在堆中申请(new/malloc)了一块内存,但是没有去手动的释放(delete/free)内存,导致指针已经消失,而指针指向的东西还在,已经不能控制这块内存, 所以就是 ...

  7. go语言实现单链表

    线性表包含两种存储方法:顺序存储结构和链式存储结构,其中顺序表的缺点是不便插入与删除数据. 单链表:每个结点包含两部分:数据域+指针域,上一个结点的指针指向下一结点,依次相连,形成链表.特别注意的是每 ...

  8. 【LEETCODE】33、LeetCode的Given a non-negative integer numRows, generate the first numRows of Pascal's triangle

    package y2019.Algorithm.array; import java.util.ArrayList; import java.util.List; /** * @ProjectName ...

  9. List集合转换为数组类型方法

    list集合转换为数组可以使用list集合的toArray(T[] a)方法, topicDetailsVo.setUrl(urls.toArray(new String[]{})); url是个数组 ...

  10. SQL高级教程

    一.top子句 top子句用于规定要返回的记录的数目 并非所有数据库系统都支持top子句 # sqlserver SELECT TOP number|percent column_name(s) FR ...