在构建可扩展性高、面向队列的应用程序时,比较难相处的问题之一是管理同时读取队列的多个线程。如果消息之间彼此无关,就没什么问题。但是,如果同一个操作中涉及了多个消息,那么在不同线程上处理的消息之间就可能存在冲突。
  例如,假如一个订单处理服务向一个库存服务和一个运送服务发送消息。这些服务完成后,会发回结果消息。当订单处理服务接收到结果时,或更新订单。如果两个结果同时返回,并在两个不同的线程上处理,那么就可能发生更新冲突,订单出错。
  会话内的消息不存在问题,因为此时,处理完前一条消息后,才会接收后一条消息。但是这一点不适用于为同一个操作创建的不同会话。为了解决这个问题,可以把相关的会话安排到一个会话组中。当处理会话组中的一条消息时,会话组锁会阻止其他线程处理该组中任意会话的消息。这意味着虽然队列处理可以是大规模并行的,会话组中消息的处理是单线程的,这大大简化了处理这些消息的编程工作。
  在默认情况下,除非在创建会话时显式指定会话组,否则每个会话都有属于自身的会话组。可以通过两种方式指定新的会话所属的会话组:
  直接指定所需使用的会话组
  指定一个会话的句柄,新会话将与该会话分组到一起。
  SQL Server并没有用于显式创建会话组的命令。当新的会话开始时,与之对应的会话组会自动被创建,并为之分配新的GUID作为标识符。如果需要将新的花花分配到特定会话组,只需要将BEGIN DIALOG语句的参数赋值为会话组的GUID。
  如果需要查询待处理的下一条消息所属的会话组,可以通过GET CONVERSATION语句来实现。使用这条语句时,需要指定一个变量来存储下一个会话组,以及用于获取会话组的队列名称。

WorkWinFaceh

 

★关于WorkWin公司电脑监控软件★

WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。

WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。

WorkWin介绍

WorkWin监控首页 短视频讲解 下载免费试用版

版权所有,南京网亚计算机有限公司 。本文链接地址: 应用程序会话组