协定

适用范围:SQL ServerAzure SQL 托管实例

约定用于定义应用程序完成特定任务时所用的消息类型。 约定是两个服务间关于每个服务该发送哪些消息才能完成特定任务的协议。 约定定义保存在创建消息类型的数据库中。

在参与会话的每个数据库中应创建相同的约定。 例如,如果人力资源应用程序要验证雇员 ID,则请求验证的服务必须知道另一个服务需要的消息类型。 请求服务还必须知道可以接收哪些类型的消息,以便准备好处理它们。

约定用于指定完成所需工作要用的消息类型。 约定还指定会话中可使用每个消息类型的参与者。 某些消息类型可由任一参与者发送;而其他消息类型则只限发起方或目标方进行发送。 协定必须包含发起方发送的消息类型或参与者发送的消息类型;否则,发起程序无法开始使用该协定的会话。

Service Broker 还包括名为 <a0/> 的内置协定。 协定 DEFAULT 仅包含消息类型 SENT BY ANY。 如果未在 BEGIN DIALOG 语句中指定协定,Service Broker 将使用协定 DEFAULT

例如,约定可具有消息类型 SubmitRequest、ProcessRequest 和 RequestStatus。 只有发起终结点可以使用 SubmitRequest,并且只有目标终结点可以发送 ProcessRequest。 对话中的任一参与者都可以发送 RequestStatus 消息类型。 RequestStatus 消息类型可使参与者在其处理中查看目标的位置,或者与发起方核实与此请求有关的任何并行处理的状态。