`
netxdiy
  • 浏览: 680287 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL Server 2008中Service Broker基础应用(下 )

 
阅读更多

SQL Server 2008中SQL应用系列--目录索引

  导读:在上篇《SQL Server 2008中Service Broker基础应用(上) 》中,简要介绍了Service Broker的一般步骤,本文继续介绍Service Broker的设置会话优先级,存储过程中实现。

一、Service Broker的设置会话优先级

  自SQL Server 2008起,对非常活跃的Service Broker应用程序,提供了设置优先级的命令CREATE BROKER PRIORITY(http://msdn.microsoft.com/en-us/library/bb934170.aspx )。通过该命令,可以设置从1至10共10个等级的颗粒度来调试会话的优先级,默认为5。在此之前,你必须得首先打开HONOR_BROKER_PRIORITY开关。

  通过sys.conversation_priorities目录视图,查询优先级

  如果你希望包含服务和契约名称,可以将服务和从sys.conversation_priorities(http://msdn.microsoft.com/zh-cn/library/bb895280%28v=sql.100%29.aspx )返回的契约ID与sys.service_contracts(http://msdn.microsoft.com/en-us/library/ms184378.aspx ),sys.services(http://msdn.microsoft.com/en-us/library/ms174429.aspx )目录视图关联起来。

二、Service Broker的存储过程实现

  在上文中,我们使用的临时T-SQL来演示Service broker的步骤,事实上, 我们完全可以通过存储过程或外部应用程序自动激活并处理队列中的消息。使用Create Queue(http://msdn.microsoft.com/en-us/library/ms190495.aspx )和Alter Queue(http://msdn.microsoft.com/en-us/library/ms189529.aspx )选项,也可以指定可以激活并处理在同一队列中传入的消息的、同时执行的相同服务程序的数量。

继续上文的示例:

  解析:该存储过程包含处理//SackConsulting/SendBookOrder和http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog 消息类型的逻辑。如果发送发后者,特定会话的句柄的特定会话会结束。如果接收到图书订单消息类型,它的消息将插入到表中,并且返回订单确认信息。

  可以使用Alter Queue命令修改既有的队列。这个命令使用与Create Queue相同的选项,它允许改变队列的状态与保持期、待激活的存储过程、队列读取存储过程实例的最大数量以及过程的安全模式契约。

  Alter Queue包括一个额外的参数Drop,它用来删除队列的所有存储过程激活设置。

  使用Alter Queue命令将存储过程绑定到既有的队列:

  为了测试BookStore数据库的新服务程序,开始一个会话并设置新顺序:

  当队列Status=ON并且队列中到到达新消息时,执行存储过程来处理传入的消息。可以使用存储过程或外部程序,但使用存储过程的好处是,它们提供了处理消息、自动执行所有需要的响应和相关业务任务的简单的封装好的组件。

  如果在目标队列上有存储过程被执行,并且激活新的接收到的消息,那么应该已经有订单确认消息返回到dbo.BookStoreQueue:

小结:本文主要介绍Service Broker的设置会话优先级,存储过程中实现。下文将介绍Service broker的远程实现。

邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助! 3w@live.cn



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics