聚合器(BizTalk Server 示例)
本示例的目的在于使用业务流程和管道建立消息聚合功能。 具体而言,我们将生成一个执行以下操作的业务流程:
接收一组相关消息。 根据从消息内容中提取的目标伙伴 URI 信息对消息进行关联。
通过执行一个 XML 发送管道,将收到的消息聚合到单个交换批中。
每分钟生成一个 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 交换。 |
生成并初始化本示例
使用以下过程可以生成并初始化聚合器示例。
生成和初始化聚合器示例
在命令窗口中,导航到下面的文件夹:
<Samples Path>\Pipelines\Aggregator
运行 Setup.bat 文件,该文件将执行以下操作:
在以下文件夹中,为本示例创建输入 (In) 和输出 (Out) 文件夹:
<Samples Path>\Pipelines\Aggregator
编译此示例的 Visual Studio 项目。
创建名为“Aggregator Sample”的新应用程序并将示例程序集部署到该应用程序中。
创建并绑定 BizTalk Server 接收位置、发送和接收端口。
登记并启动业务流程,启用接收位置并启动发送端口。
如果选择在不运行文件 Setup.bat 的情况下打开并生成此示例中的项目,则必须首先使用.NET Framework强名称实用工具 (sn.exe) 创建强名称密钥对。 使用该密钥对可以对生成的程序集进行签名。
在尝试运行本示例之前,请确认在生成和初始化过程中 BizTalk Server 未报告任何错误。
若要撤销 Setup.bat 所做的更改,请运行 Cleanup.bat。 必须在第二次运行 Setup.bat 之前运行 Cleanup.bat。
运行示例
使用以下过程运行聚合器示例。
运行聚合器示例
打开位于 PipelinesAndSchemas 文件夹中的 Instance1.txt 和 Instance2.txt 文件以查看其内容。
请注意,在这两个文件中,DestinationPartnerURI 元素都包含 值
http://www.contoso.com
。 该值用于将这两条消息关联在一起,以便可以将它们添加到同一个交换中。同样,Instance3.txt 和 Instance4.txt 文件将 DestinationPatnerURI 元素设置为
http://www.northwind.com
。这两条消息将一起添加到另一个交换中。
将文本文件 Instance1.txt、Instance2.txt、Instance3.txt 和 Instance4.txt 的副本粘贴到文件夹 In。
聚合业务流程在收集了 10 条消息或达到 1 分钟的超时时间后才会生成输出交换。 所以,Out 文件夹中的文件可能会延迟一段时间才出现。
若要避免这段等待时间,可以将四个输入文件再粘贴四次,这样可触发聚合业务流程生成交换。
观察在“Out”文件夹中创建的 XML 文件。应有两个文件 - 每个目标伙伴 URI 各一个。
打开其中一个文件并查看其内容。 文件应包含由一个信封和信封内的两个 XML 文档组成的一个 XML 交换。
备注
在保护方案中的高负载情况下,示例的实现方式可能会导致“已送达,消息未使用”或“已完成,有消息被放弃”。 在将消息路由至正处于结束过程中的业务流程时,或者在有预料之外的消息到达业务流程时,都会出现此情况。