SQL Server 2005 Service Broker 初探
2007-05-13 09:26:17 来源:WEB开发网核心提示: 我想通过这个例子说明的最后一个问题是,当持有会话组的事务被提交后,SQL Server 2005 Service Broker 初探(4),该会话组中的另一条消息到达时会发生什么情况,还以售票处为例,因为如果使用数据库确保队列中消息的完整性,但消息却在传送到其他数据库的过程中丢失,当我的家
我想通过这个例子说明的最后一个问题是,当持有会话组的事务被提交后,该会话组中的另一条消息到达时会发生什么情况。还以售票处为例,当我的家人都登记后,我的一个孩子才到达机场。由于原始事务已经结束,最后一位乘客可以由任一票务代理服务。只有在原始代理留下便条,说明该组中其他人员的位置时,新代理才能知道如何为最后一位乘客安排座位。同样,当处理相关消息组的事务完成时,必须记录会话的“状态”以便当该组中下一条消息到达时,接收该消息的队列读取器了解上一个事务停止时的位置。因为这是数据库应用程序,所以存储该状态的位置应该是一张数据库表。Service Broker 提供了一个会话组 ID,可以使用它来方便地将会话状态和会话中的消息相关联。这是与会话组中每条消息一起显示的唯一标识符。如果唯一标识符用作存储状态的表中的密钥,则消息处理逻辑可以很容易地找到与接收到的每条消息相关联的状态。另外,因为每次只有一个队列读取器可以处理来自特定会话组的消息,所以开发人员不必担心同时有两个事务更新状态行从而导致丢失状态信息。
以上示例说明,多读取器队列是扩展大型应用程序的一种简单而有效的方法。Service Broker 提供的会话组锁定机制使编写使用多读取器队列的应用程序像编写使用单读取器队列的应用程序一样容易。
分布前面讨论的队列都假定位于一个数据库中。为了开发适用于多种业务情况的松散耦合的分布式数据库应用程序,我们需要进行扩展,以包括分散在网络中(通过可靠的消息传送进行通信)的多个数据库中的队列。我们需要可靠的消息传送,因为如果使用数据库确保队列中消息的完整性,但消息却在传送到其他数据库的过程中丢失,所有工作都将是徒劳的。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接