服务体系结构

适用于:SQL ServerAzure SQL 托管实例

本节介绍一些数据库对象,它们指定使用 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 服务:

Service Broker 对象的关系

如图所示,ProcessExpenses 约定指定三种消息类型:SubmitExpense、AcceptDenyExpense 和 ReimbursementIssued。 该约定列出执行退款任务的会话所需的消息类型。 ProcessExpenses 约定控制 ProcessExpense 服务和发起与 ProcessExpense 服务间会话的任何服务之间的所有会话。 ProcessExpense 服务将传入消息和传出消息存储在 ExpenseQueue 队列中。 ExpenseProcessing 存储过程从此队列接收消息并处理消息,在需要答复的情况下再将消息发回队列以路由到相应的 Broker。

本节内容

  • 消息类型
    会话的各参与方必须就每个消息的名称和内容达成一致。 消息类型定义名称和内容。

  • 协定
    约定用于定义应用程序完成特定任务时所用的消息类型。

  • 队列
    队列存储 Service Broker 消息。

  • 服务
    Service Broker 服务是特定业务任务或业务任务组的名称。

另请参阅