假设在同一数据库中创建了多个接收位置,这些位置是配置为接收同一表(例如 Employee)的查询通知的不同 BizTalk 应用程序的一部分。 如果将一百条记录插入到同一表中,则所有接收位置都将收到通知消息。 若要在多个接收位置上有效地接收通知,可以通过调用 BizTalk 应用程序的操作来实现,这样一来,如果一个接收位置收到通知,另一个接收位置就不会收到相同的通知。 因此,可以有效地对多个位置收到的通知进行负载均衡。
设置业务流程以负载均衡接收通知所需的任务与 使用 BizTalk Server 从 SQL 以增量方式接收查询通知的任务相同。 本主题仅列出了这两种方法之间的差异。
在多个接收位置中查询通知 Load-Balancing
与在主题 中使用 BizTalk Server 以增量方式从 SQL 接收查询通知一样,通过对已收到通知的记录执行 UPDATE 语句来配置增量通知。 若要配置负载均衡,可以执行一个存储过程,以删除已通知的记录。 例如,请考虑具有以下定义的存储过程PROCESS_EMPLOYEE:
DECLARE @var int
SELECT TOP 1 @var = Employee_ID FROM Employee
SELECT * FROM Employee WHERE Employee_ID=@var
DELETE FROM Employee WHERE Employee_ID=@var
将此存储过程作为 BizTalk 应用程序的一部分执行时,将删除已接收通知的记录。 因此,另一个接收位置会获取下一条记录的通知。
下面是为接收通知配置负载均衡而必须执行的高级步骤。
为 通知(入站操作)和 PROCESS_EMPLOYEE 存储过程(出站操作)创建架构。
添加一个编排,并添加三条消息用于接收通知、执行存储过程,以及获取存储过程的响应。
通过添加发送和接收形状、构造消息形状和端口来创建业务流程。 可以使用相同的示例代码来构造消息来调用PROCESS_EMPLOYEE存储过程。 请注意,在 BizTalk Server 管理控制台中执行操作时,必须在位置 C:\TestLocation\MessageIn 中有 PROCESS_EMPLOYEE 存储过程的请求消息。 您这样做是因为您调用作为使用 BizTalk Server 以增量方式从 SQL 接收查询通知中创建的业务流程一部分的代码片段,该代码片段根据存在于 C\\TestLocation\\MessageIn 的请求 XML 创建请求消息。
生成和部署应用程序。 若要演示负载均衡,必须在安装了 BizTalk Server 和 SQL 适配器的两台不同计算机上至少部署此业务流程。
在两台计算机上的 BizTalk Server 管理控制台中,为 WCF-Custom 或 WCF-SQL 接收位置指定以下绑定属性:
Binding 属性 价值 InboundOperationType 将此设置为 “通知”。 NotificationStatement 将此设置为:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
注意: 对于通知语句,必须始终指定表名称以及架构名称。 例如,dbo.Employee
。NotifyOnListenerStart 将此设置为 True。 启动 BizTalk 应用程序。
若要开始接收通知,请将一百条记录插入 EMPLOYEE 表中。 执行此作时,请确保调用 PROCESS_EMPLOYEE 存储过程的请求 XML 在 C:\TestLocation\MessageIn 中可用。
监视 BizTalk 应用程序将在两台计算机上投递通知消息的位置。 你会注意到插入的百条记录中,一个位置会获取一些记录的通知,而另一个位置则获取剩余记录的通知。 这两个位置将同时收到所有百条记录的通知。