这里演示同一个SQL Server中不同数据库之间的基于Service Broker的异步消息传递,其中Stored Procedure充当Service Program。HelloWorldDB为目标数据库,DotNetFun2则为消息发送发的数据库。
同时,假设Server Broker的基本对象类型已经创建,如MessageType(XMLMessage), C>
1.创建Stored Procedure作为Internal Service Program.
USE HelloWorldDB GO Alter Procedure HelloWorldResp>
该Stored Procedure负责从ReceivingQueue中检索消息,并根据Queue的Retenti>
2.设置目标队列(Target Queue)的激活机制
Use HelloWorldDB go ALTER QUEUE [ReceivingQueue] WITH ACTIVATI> 设置上述创建的Stored Procedure,该Stored Procedure将被激活并处理Queue中的消息。
3.在Initiator端发送消息
Use DotNetFun2 go DECLARE @c>
其中,TO SERVICE ''ReceivingService'',''a727462b-52e7-4405-9eee-d19923729790'',’ReceivingSerice’表示目标Service名称,''a727462b-52e7-4405-9eee-d19923729790''则指定目标Service所在的数据库,可以通过如下SQL Script获取:
-- Retrieve remote broker instance guid SELECT service_broker_guid FROM sys.databases WHERE database_id = DB_ID(''HelloWorldDB'')
另外,可以通过如下的SQL script来检测Initiator端收到的Reply消息:
Select cast(message_body as XML) From SendingQueue Receive message_type_name, cast(message_body as XML) From SendingQueue
4.查询对话端点状态(State of C>
最后,可以通过在Target/Initiator端查询sys.conversation_endpoints表,获取Dialog对话状态:
Select * From sys.conversation_endpoints
选择5ucms.org 选择未来
上一篇:5ucms仿站,监测你的SQL Server--让瓶颈暴露 下一篇:5ucms插件,技巧放送:两个数据分页的存储过程 |
|
本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。 5ucms仿站,基于Service Broker的异步消息传递的关键词: |