WEB开发网
开发学院数据库MSSQL Server SQL Server 2005 Service Broker 初探 阅读

SQL Server 2005 Service Broker 初探

 2007-05-13 09:26:17 来源:WEB开发网   
核心提示: Service Broker 使用称为“对话协议”的可靠消息传送协议来确保发送到远程队列的消息按顺序到达并且仅到达一次,正如对话是双向会话一样,SQL Server 2005 Service Broker 初探(5),对话协议同时支持双向的消息传送,对话消息具有标题

Service Broker 使用称为“对话协议”的可靠消息传送协议来确保发送到远程队列的消息按顺序到达并且仅到达一次。正如对话是双向会话一样,对话协议同时支持双向的消息传送。

对话消息具有标题,可确保消息按正确顺序安全地传送到正确的目标位置。它包含序列号、消息所在对话的标识符、要发送到的服务的名称、安全性信息以及用于控制消息传送的一些其他信息。当目标位置成功接收到消息后,它将发出确认,以便源位置知道已成功传送了消息。如果可能,确认信息将包含在另一条消息的标题中发送回源位置,以尽可能减小消息的数量。如果源位置在某一时限内没有收到确认,将重新发送该消息直到成功传送。

消息传送系统在传送较大的消息时经常会遇到问题。发送以 GB 为单位的消息会花几分钟时间,从而会占用一段时间的网络连接。如果发生网络错误导致重新发送消息多次,将会严重影响网络性能。为了解决此问题,Service Broker 对话协议将大型消息拆分成多个较小的片段,然后再单独发送每个片段。如果发生网络错误导致重新发送,则只重新发送传送失败的消息片断。因此,Service Broker 最大可以支持 2GB 的消息,而许多可靠的消息传送系统只能发送 100MB 或更小的消息。

事务性消息传送

“仅一次”消息处理需要使用事务性消息。为了说明此问题,假定某个应用程序在处理消息的过程中发生了错误。当应用程序重新启动时,它如何才能知道是否要处理发生错误时正在处理的消息呢?数据库中可能已经更新了消息处理的结果,因此重新处理消息可能产生重复的数据。唯一安全的处理方式是使接收消息成为更新数据库的同一事务的一部分。在系统崩溃时数据库更新和消息接收都回滚,因此数据库和消息队列的状态与系统崩溃前的状态相同。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server Service

编辑录入:coldstar [复制链接] [打 印]
赞助商链接