使用数据从多个接收位置接收SQL查询BizTalk Server

假设有多个接收位置创建为不同 BizTalk 应用程序的一部分,这些位置配置为接收同一表的查询通知 (例如同一数据库中的员工) 。 如果将一百条记录插入到同一个表中,则所有接收位置都将获得通知消息。 若要有效地跨多个接收位置接收通知,可以从 BizTalk 应用程序调用操作,这样一来,如果一个接收位置收到通知,另一个接收位置不会收到相同的通知。 因此,你可以有效地对在多个位置收到的通知进行负载均衡。

设置业务流程以对接收通知进行负载均衡所需的任务与使用 BizTalk Server 以增量方式接收来自SQL通知BizTalk Server。 本主题列出了这两种方法的唯一区别。

Load-Balancing多个接收位置执行查询通知

主题使用 SQL 以增量方式接收查询通知一样BizTalk Server,你通过针对已收到通知的记录执行 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 应用程序中执行此存储过程时,将删除已接收通知的记录。 因此,另一个接收位置将获取下一条记录的通知。

下面是配置负载均衡以接收通知时必须执行的高级别步骤。

  1. 入站操作 ( 创建) 架构 PROCESS_EMPLOYEE出站 (过程) 。

  2. 添加业务流程并添加三条消息,用于接收通知、执行存储过程以及获取存储过程的响应。

  3. 通过添加发送和接收形状、构造消息形状和端口来创建业务流程。 可以使用同一示例代码构造消息,以调用PROCESS_EMPLOYEE过程。 请注意,在管理BizTalk Server中执行该操作时,必须在位置 C:\TestLocation\MessageIn 中PROCESS_EMPLOYEE过程的请求消息。 这样做是因为,作为使用 BizTalk Server 以增量方式从 SQL 接收查询通知中创建的业务流程中创建的业务流程的一部分调用的代码片段基于 C:\TestLocation\MessageIn 中的请求 XML 创建请求消息。

  4. 生成并部署应用程序。 若要演示负载均衡,必须至少在安装了 BizTalk Server 和 SQL 的计算机上部署此业务流程。

  5. 在两BizTalk Server的"管理"控制台中,为"WCF-Custom"或"WCF-SQL位置指定以下绑定属性:

    绑定属性
    InboundOperationType 将此选项设置为 "通知"
    NotificationStatement 将此选项设置为:

    SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0

    注意: 对于通知语句,必须始终指定表名和架构名称。 例如,dbo.Employee
    NotifyOnListenerStart 将此选项设置为 True
  6. 启动 BizTalk 应用程序。

  7. 若要开始接收通知,请将一百条记录插入到 EMPLOYEE 表中。 执行此操作时,请确保在 C:\TestLocation\MessageIn 中PROCESS_EMPLOYEE调用存储过程的请求 XML。

  8. 监视两台计算机上 (BizTalk 应用程序) 通知消息的位置。 你会注意到,在插入的数百条记录中,一个位置获取某些记录的通知,另一个位置获取剩余记录的通知。 这两个位置将一起获得所有百条记录的通知。

另请参阅

使用 SQL 接收查询BizTalk Server