欢迎来到天天文库
浏览记录
ID:22377617
大小:76.00 KB
页数:10页
时间:2018-10-28
《sqlserver实战经验分享》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、SQLServer实战经验分享 在平常的项目设计中,我们经常会用到各种各样的队列来实现分布式系统的异步调用逻辑和数据消息的传递,从而来达到增强应用程序的性能和可伸缩性,通过事务性队列的离线消息处理机制更可以大大提高系统的可靠性。SQLServer自2005以后版本便增加了一个新的内置队列处理应用模块ServiceBroker,此功能模块大大简化了队列的使用操作,更方便的是能和原先的SQLServer系统在事务处理上完美的结合在一起。可是唯一的缺陷是增加了设计的耦合性。 接下来我们就如何使用ServiceBroker来做一个场景描述。我们需要设计一个SDN文档): 1
2、.实现ServiceBroker消息、队列和服务 公共部分 定义消息类型架构集合 CREATEXMLSCHEMACOLLECTION[Samples/SQL/ServiceBroker/msgOperationSchema]ASN'<?xmlversion=1.0?><xs:schemaxmlns:xs=.a> <xs:elementname=msgOperation> <xs:plexType> <xs:sequence> <xs:elementname=msgIdtype=xs:
3、int/> <xs:elementname=msgContenttype=xs:string/> </xs:sequence> </xs:plexType> </xs:element></xs:schema>'; 定义消息类型CREATEMESSAGETYPE[Samples/SQL/ServiceBroker/msgOperation]VALIDATION=VALID_XMLACOLLECTION[Samples/SQL/ServiceBroker/msgOperationSchem
4、a]; 定义消息契约 CREATECONTRACT[Samples/SQL/ServiceBroker/msgOperationContract]( [Samples/SQL/ServiceBroker/msgOperation] SENTBYINITIATOR); 初始方 定义队列CREATEQUEUEmsgOperationInitQueueSERVICE[Samples/SQL/ServiceBroker/msgOperationInitService] TOSERVICE'Samples/SQL/ServiceBroker/msgOpera
5、tionProcessService' ONCONTRACT[Samples/SQL/ServiceBroker/msgOperationContract]; --E=3600; --发送消息 SENDONCONVERSATIONdialog MESSAGETYPE[Samples/SQL/ServiceBroker/msgO1234下一页>>>>这篇文章来自..,。peration](message_body); ENDCONVERSATIONdialog;GO 目标方 定义队列处理存储过程CREATEPROCEDUREdbo.usp
6、_msgOperation_CMDAS RETURN0GO 定义队列CREATEQUEUEmsgOperationProcessQueueE=dbo.usp_msgOperation_CMD, MAX_QUEUE_READERS=1, EXECUTEASSELF); 实现队列处理存储过程ALTERPROCEDUREdbo.usp_msgOperation_CMDASdeclaremessage_bodyasxml;declaremessage_typeassysname;declaredialogasuniqueidentifier;dbo.msgOperati
7、onProcessQueue ),TIMEOUT2000 --如果没收到任何消息则跳出循环 IF(ROITTRANSACTION ENDGO 实现目标处理服务CREATESERVICE[Samples/SQL/ServiceBroker/msgOperationProcessService]ONQUEUEdbo.msgOperationProcessQueue([Samples/SQL/ServiceBroker/msgOperationContract])GO 2.实现ServiceBroker安全配
此文档下载收益归作者所有