服务体系结构
本节介绍一些数据库对象,它们指定使用 Service Broker 的应用程序的基本设计。
在设计时,Service Broker 应用程序指定以下对象:
消息类型 — 定义应用程序间交换的消息的名称。还可以选择是否验证消息。
约定 — 指定给定会话中的消息方向和消息类型。
队列 — 存储消息。此存储机制使服务间可以进行异步通信。Service Broker 队列还有其他优点,比如自动锁定同一个会话组中的消息。
服务 — 是可寻址的会话端点。Service Broker 消息从一个服务发送到另一个服务。服务指定一个队列来保存消息,还指定一些约定,约定指明该服务可作为“目标”。约定向服务提供一组定义完善的消息类型。
Service Broker 应用程序使用上述列表中的 SQL Server 对象进行会话。任何可在 SQL Server 中运行 Transact-SQL 语句的程序,均可使用 Service Broker。应用程序可以是以 Transact-SQL 编写的或以符合 CLR 的语言编写的存储过程,也可以是连接到 SQL Server 实例的外部程序。
以下关系图显示了一个 Service Broker 服务:
如图所示,ProcessExpenses 约定指定三种消息类型:SubmitExpense、AcceptDenyExpense 和 ReimbursementIssued。该约定列出执行退款任务的会话所需的消息类型。ProcessExpenses 约定控制 ProcessExpense 服务和发起与 ProcessExpense 服务间会话的任何服务之间的所有会话。ProcessExpense 服务将传入消息和传出消息存储在 ExpenseQueue 队列中。ExpenseProcessing 存储过程从此队列接收消息并处理消息,在需要答复的情况下再将消息发回队列以路由到相应的 Broker。
本节内容