Exception handling BizTalk中大消息处理的异常处理

Exception handling BizTalk中大消息处理的异常处理,exception-handling,biztalk,large-files,Exception Handling,Biztalk,Large Files,我的第一个堆栈溢出问题,请原谅我在这里的任何愚蠢/天真 我有一个BizTalk 2010 R2解决方案正在使用 使用自定义管道组件实现的集成模式,可在接收时将大型(当前高达1Gb).mp4文件移动到文件夹位置,并在发送时再次拾取它们,以便它们不会通过BizTalkMsgBoxDb 有时,我们会在接收文件时出错,导致在接收端口引发异常。我们使用“启用失败消息的路由”设置来避免实例在系统中挂起,但这会导致将大的.mp4文件拖到消息框中,最终拖到ESBEExceptionDB中。显然不是理想的解决方案

我的第一个堆栈溢出问题,请原谅我在这里的任何愚蠢/天真

我有一个BizTalk 2010 R2解决方案正在使用 使用自定义管道组件实现的集成模式,可在接收时将大型(当前高达1Gb).mp4文件移动到文件夹位置,并在发送时再次拾取它们,以便它们不会通过BizTalkMsgBoxDb

有时,我们会在接收文件时出错,导致在接收端口引发异常。我们使用“启用失败消息的路由”设置来避免实例在系统中挂起,但这会导致将大的.mp4文件拖到消息框中,最终拖到ESBEExceptionDB中。显然不是理想的解决方案

我可以在custom receive pipeline组件中实现代码来处理特定类型的错误,但我确实想知道是否有更好的方法来处理这种错误,以便任何异常(预期的或意外的)都会导致将大文件路由到其他地方的失败文件存储,而不会在任何时候进入BizTalkMsgBoxDb


非常感谢您的建议。

我建议您在自定义接收管道中处理异常


绝对确保
pInMsg.BodyPart.Data
被另一个(较小)流替换,然后大文件无法流到BizTalkMsgBoxDb,因为BizTalk不再有对它的引用。

我建议在自定义接收管道中处理异常


绝对确保用不同(较小)的流替换
pInMsg.BodyPart.Data
,然后大文件无法流到BizTalkMsgBoxDb,因为BizTalk不再有对它的引用。

显然,您必须使用异常处理,并确保pInMsg.BodyPart.Data不为空。此外,如果您正在使用本文中建议的自定义管道“”

请确保在execute方法中优化代码。对于我的例子,我用下面的代码替换了while(bytesRead!=0)循环。现在我在我的自定义管道中没有看到任何问题,它工作得很快。 使用


(var fileStream=File.Create(“C:\\Path\\To\\FileName”){originalStream.Seek(0,SeekOrigin.Begin);originalStream.CopyTo(fileStream);}

显然,您必须使用异常处理并确保pInMsg.BodyPart.Data不为空。此外,如果您正在使用本文中建议的自定义管道“”

请确保在execute方法中优化代码。对于我的例子,我用下面的代码替换了while(bytesRead!=0)循环。现在我在我的自定义管道中没有看到任何问题,它工作得很快。 使用


(var fileStream=File.Create(“C:\\Path\\To\\FileName”){originalStream.Seek(0,SeekOrigin.Begin);originalStream.CopyTo(fileStream);}

自定义管道组件是否将文件流式传输到磁盘,并将
pInMsg.BodyPart.Data
替换为包含小XML消息的流以供进一步处理?有点像?是的,差不多就是这样。我试图解决的问题是,当处理过程中出现错误时(例如,我们最近遇到一个网络问题,导致流写入的目标文件夹暂时不可用),原始文件会作为标准错误处理的一部分持久化到消息框中。自定义管道组件是否将文件流到磁盘,并将
pInMsg.BodyPart.Data
替换为包含用于进一步处理的小XML消息的流?有点像?是的,差不多就是这样。我试图解决的问题是,当处理过程中出现错误时(例如,我们最近遇到了一个网络问题,导致流写入的目标文件夹暂时不可用),原始文件将作为标准错误处理的一部分保留到消息框中。谢谢。我将对其进行更改,以便在处理过程中立即替换msg.BodyPart.Data,并且管道组件中的自定义异常处理尝试将文件流式传输到错误位置。我希望有一个更简洁的开箱即用的解决方案,但我想这是乐观的,因为我们已经用自定义组件进行了正常的处理。谢谢。我将对其进行更改,以便在处理过程中立即替换msg.BodyPart.Data,并且管道组件中的自定义异常处理尝试将文件流式传输到错误位置。我希望有一个更简洁的开箱即用的解决方案,但我想这是乐观的,因为我们已经用自定义组件进行了正常的处理。