状态管理

适用于:SQL ServerAzure SQL 托管实例

需要维护状态的应用程序通常在数据库表中存储相应状态。 由于每个会话组都具有唯一标识符,因而此标识符通常用作状态表的键。 Service Broker 还为必须保留发送和接收的确切消息的应用程序提供消息保持。

许多应用程序不需要状态。 通常,如果任务涉及多个消息,并且有关任务的信息不能存储在数据库的现有表中,则应用程序会保持状态。

例如,查找并返回客户信息的应用程序不需要状态,并且不使用状态表。 不同的是,管理订单履行的应用程序会生成针对其他若干服务的请求。 协调针对其他服务的请求的程序通常使用状态表跟踪这些请求。 此应用程序将更新相应的数据表并在所有请求已成功完成时清除状态表。 如果某请求返回错误,则此应用程序将重新发送此请求,或使用状态表发送补救请求。

应用程序还可以使用状态表进行审核或日志记录。 应用程序会将有关每个请求的重要信息保存到状态表。 在这种情况下,当会话完成时,应用程序不会从状态表中删除信息。

某些应用程序可能需要在会话处于活动状态时发送和接收的消息的精确记录。 对于这种情况,Service Broker 可提供消息保持。