Microsoft BizTalk 失败的消息路由 ESB 处理示例演示如何使用 Microsoft BizTalk ESB 工具包异常管理框架作为管理、序列化和呈现 BizTalk Server 中所有条件下发生的异常的通用机制。 这包括 BizTalk 失败消息路由机制生成的异常,以及异常管理框架从业务流程中生成的错误消息。
BizTalk 失败消息路由机制是 BizTalk Server 的错误处理工具;通过使用它,设计人员可以为消息传输失败指定自动处理方法,以替代将失败消息置于“已挂起”队列的传统(现在为默认)行为。 此自动处理会将错误消息路由到任何订阅路由目标,例如发送端口或业务流程。 错误消息是原始消息的克隆,其中所有先前已提升的属性均已降级,而与特定消息失败相关的选定属性则被提升到消息上下文中。
若要在接收端口或发送端口上启用 BizTalk 失败消息路由机制,请选中“ 为失败的消息启用路由 ”复选框,如图 1 所示。
图 1
启用 BizTalk 失败消息的路由机制
但是,对于编排中发生的错误或失败没有类似的机制。 相反,业务流程异常处理程序中的代码可以利用异常管理框架 API 来模拟 BizTalk 失败消息路由机制的功能。
在此示例中,位于 \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.RequestPort 的文件被复制后,会通过名为 EAIProcess.RequestPort_FILE 的接收端口进行处理。
此外,还有一个名为 ALL 的通用发送端口。Exceptions_FILE配置为使用作为异常管理框架的一部分安装的 GlobalFaultProcessor 管道。 此端口订阅系统中发生的所有异常,即 BizTalk 失败的消息路由消息和 ESB 错误消息,如图 2 所示。
图 2
ALL针对所有类型故障或异常的发送端口订阅
异常管理框架将所有异常规范化为单一格式,并使用 Microsoft InfoPath 处理指令将它们序列化到位置 \Source\Samples\Exception Handling\Test\Filedrop\All_Exceptions。
安装
所有异常管理示例都使用相同的核心服务和 BizTalk 应用程序项目集。 因此,必须仅安装一次异常管理示例项目才能运行所有异常管理示例。 有关如何安装异常管理示例的信息,请参阅 安装异常管理示例。
运行示例应用程序
运行 BizTalk 失败消息路由 ESB 处理示例
首次运行此示例之前,请确保接收位置和将端口 URL 指向 \Source\Samples\Exception Handling\Test\Filedrop 文件夹中的相应目录。 接收位置应指定文件夹 EAIProcess.RequestPort,发送端口 URL 应指定文件夹All_Exceptions。
如果 GlobalBank.ESB 应用程序尚未运行,请使用 BizTalk 管理控制台启动它。
将名为 FlatFileReceive_in.txt 的文件从 \Source\Samples\Exception Handling\Test\Data 复制到名为 EAIProcess.RequestPort 的接收位置文件夹中(在 \Source\Samples\Exception Handling\Test\Filedrop 文件夹中)。
此消息是文本文件,将导致异常。 打开名为 All_Exceptions 的文件夹(在 \Source\Samples\Exception Handling\Test\Filedrop 文件夹中),然后双击错误消息以使用相应的模板将其打开到 InfoPath 中。 你将看到 ESB 异常处理机制会相应地序列化内容,以允许 InfoPath 呈现它。
接下来,将名为 soapmessage[1] 的文件从文件夹 \Source\Samples\Exception Handling\Test\Data 复制到 EAIProcess.RequestPort 接收位置文件夹中.xml。
此消息是包含 CDATA 节的 XML 文档,它将导致异常。 打开All_Exceptions输出文件夹,然后双击错误消息将其打开到 InfoPath 中。 你将看到 ESB 异常处理机制会相应地序列化此内容,以允许 InfoPath 呈现它。
最后,将名为 Csqzav01.pdf 的文件从文件夹 \Source\Samples\Exception Handling\Test\Data 复制到 EAIProcess.RequestPort 接收位置。
此消息是 PDF 文件,将导致异常。 打开All_Exceptions输出文件夹,然后双击错误消息,在 InfoPath 中将其打开。 你将看到 ESB 异常处理机制序列化和 Base-64 对内容进行编码,以允许 InfoPath 呈现它。