聚合器(BizTalk Server 示例)

本示例的目的在于使用业务流程和管道建立消息聚合功能。 具体而言,我们将生成一个执行以下操作的业务流程:

  1. 接收一组相关消息。 根据从消息内容中提取的目标伙伴 URI 信息对消息进行关联。

  2. 通过执行一个 XML 发送管道,将收到的消息聚合到单个交换批中。

  3. 每分钟生成一个 XML 交换消息,或者在有足够的消息可供聚合时生成一个 XML 交换消息。

本示例所在的位置

<Samples Path>\Pipelines\Aggregator

下表列出了本示例的文件。

文件 描述
Aggregator.sln 本示例的 Visual Studio 解决方案文件。
AggretatorBinding.xml 本示例的绑定文件。
Cleanup.bat 用于取消部署程序集并从全局程序集缓存 (GAC) 删除这些程序集。 删除发送和接收端口。 根据需要删除 Microsoft Internet 信息服务 (IIS) 虚拟目录。
Setup.bat 用于生成和初始化本示例。
在 Aggregate 文件夹中:

Aggregate.btproj
用于聚合业务流程的 BizTalk 项目。
在 Aggregator 文件夹中:

Aggregate.odx
业务流程,该业务流程将相关的消息收集在一起,然后执行发送管道以将它们组装到单个交换中。
在 Aggregate 文件夹中:

SuspendMessage.odx
业务流程,用于挂起那些无法在聚合业务流程中进行处理的消息。
在 PipelinesAndSchemas 文件夹中:

FFReceivePipeline.btp
带有平面文件拆装器的接收管道。
在 PipelinesAndSchemas 文件夹中:

Instance1.txt、Instance2.txt、Instance3.txt、Instance4.txt
本示例的文档实例。 应将 Instance1.txt 和 Instance2.txt 添加到目标伙伴 http://www.contoso.com的交换中,而应将 Instance3.txt 和 Instance4.txt 添加到目标伙伴 http://www.northwind.com的交换中。
在 PipelinesAndSchemas 文件夹中:

Invoice.xsd、InvoiceEnvelope.xsd
用于输出交换的文档架构和信封架构。
在 PipelinesAndSchemas 文件夹中:

PipelinesAndSchemas.btproj
架构和管道的 BizTalk 项目。
在 PipelinesAndSchemas 文件夹中:

PropertySchema.xsd
本示例的属性架构。
在 PipelinesAndSchemas 文件夹中:

XMLAggregatingPipeline.btp
从业务流程执行的发送管道,用于将收集的消息组装为一个 XML 交换。

生成并初始化本示例

使用以下过程可以生成并初始化聚合器示例。

生成和初始化聚合器示例

  1. 在命令窗口中,导航到下面的文件夹:

    <Samples Path>\Pipelines\Aggregator

  2. 运行 Setup.bat 文件,该文件将执行以下操作:

    • 在以下文件夹中,为本示例创建输入 (In) 和输出 (Out) 文件夹:

      <Samples Path>\Pipelines\Aggregator

    • 编译此示例的 Visual Studio 项目。

    • 创建名为“Aggregator Sample”的新应用程序并将示例程序集部署到该应用程序中。

    • 创建并绑定 BizTalk Server 接收位置、发送和接收端口。

    • 登记并启动业务流程,启用接收位置并启动发送端口。

      如果选择在不运行文件 Setup.bat 的情况下打开并生成此示例中的项目,则必须首先使用.NET Framework强名称实用工具 (sn.exe) 创建强名称密钥对。 使用该密钥对可以对生成的程序集进行签名。

  3. 在尝试运行本示例之前,请确认在生成和初始化过程中 BizTalk Server 未报告任何错误。

    若要撤销 Setup.bat 所做的更改,请运行 Cleanup.bat。 必须在第二次运行 Setup.bat 之前运行 Cleanup.bat。

运行示例

使用以下过程运行聚合器示例。

运行聚合器示例

  1. 打开位于 PipelinesAndSchemas 文件夹中的 Instance1.txt 和 Instance2.txt 文件以查看其内容。

    请注意,在这两个文件中,DestinationPartnerURI 元素都包含 值 http://www.contoso.com。 该值用于将这两条消息关联在一起,以便可以将它们添加到同一个交换中。

    同样,Instance3.txt 和 Instance4.txt 文件将 DestinationPatnerURI 元素设置为 http://www.northwind.com

    这两条消息将一起添加到另一个交换中。

  2. 将文本文件 Instance1.txt、Instance2.txt、Instance3.txt 和 Instance4.txt 的副本粘贴到文件夹 In。

  3. 聚合业务流程在收集了 10 条消息或达到 1 分钟的超时时间后才会生成输出交换。 所以,Out 文件夹中的文件可能会延迟一段时间才出现。

    若要避免这段等待时间,可以将四个输入文件再粘贴四次,这样可触发聚合业务流程生成交换。

  4. 观察在“Out”文件夹中创建的 XML 文件。应有两个文件 - 每个目标伙伴 URI 各一个。

    打开其中一个文件并查看其内容。 文件应包含由一个信封和信封内的两个 XML 文档组成的一个 XML 交换。

    备注

    在保护方案中的高负载情况下,示例的实现方式可能会导致“已送达,消息未使用”或“已完成,有消息被放弃”。 在将消息路由至正处于结束过程中的业务流程时,或者在有预料之外的消息到达业务流程时,都会出现此情况。

另请参阅

管道(BizTalk Server 示例文件夹)