创建 Service Broker 服务

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

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

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

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

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

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

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

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

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

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

根据服务的具体要求,创建服务的具体步骤可能稍有不同。例如,在创建用于处理事件通知的服务时,相应的消息类型和约定已由 SQL Server 定义,所以不再需要创建它们。