创建 Service Broker 服务

适用于SQL ServerAzure SQL 托管实例

Service Broker 服务的定义包含以服务为目标的约定的名称。 “目标服务”表示用来接受对约定(由服务指定)所标识的任务的请求的地址。 “起始服务”表示与目标服务的会话的返回地址。

服务指的是以一组单独的任务出现的业务流程。 服务内的每个约定都代表一个特定任务。 一个服务可以指定多个约定,一个约定可以由多个服务使用。

每个服务都使用一个队列来存储消息。 发送到服务的消息将传送到该队列。 一般而言,在只有一个服务使用给定队列时,应用程序是最容易实现的。 不过,为了灵活起见,Service Broker 允许多个服务指定同一队列。 在这种情况下,应用程序要么以相同的方式处理同一类型的所有消息,要么检查消息类型名称和服务名称,以确定如何处理消息。 在应用程序支持同一服务的多个版本的情况下,此策略会带来很多方便。

消息的网络格式包括服务的名称。 因此,选择服务名称时通常要避免排序规则问题和命名冲突。 有关命名的详细信息,请参阅 命名 Service Broker 对象

若要创建一个服务,必须执行以下操作:

  1. 创建消息类型以定义可以来回发送的数据。

  2. 创建约定以标识可使用的消息类型以及可发送这些消息类型的端点,以便完成特定任务。

  3. 创建用来接收、处理和发送完成给定任务所需消息的应用程序。

  4. 创建用来存储服务的传入消息的队列。 可以将队列与激活存储过程相关联,以便中转站在消息到达时自动激活存储过程以处理消息。

  5. 创建一个服务并使之与用来接收该服务消息的队列关联。 该服务会公开用来定义它将代表其他服务执行的任务的约定。 该服务不需要为服务从其他服务请求的任务指定协定。

创建服务所涉及的确切步骤可能会有所不同,具体取决于服务的特定需求。 例如,创建用于处理事件通知的服务时,消息类型和协定已由 SQL Server 定义,因此无需创建它们。