BizTalk:知道发送端口完成写入文件
BizTalk: Knowing send port finished write file
我的发送端口和应用程序有问题:进程无法访问文件,因为另一个进程锁定了文件的一部分。
我猜问题出在 BizTalk 发送端口正在写入文件时,应用程序拾取该文件并进行处理。
我的场景:
我有一个带有文件发送端口的编排,用于将文件写入某个位置。
在这个端口之后我有另一个发送端口来调用应用程序来选择写入的文件和进程。
我认为:当文件发送端口正在写入且尚未完成时,编排不会等待而是继续下一步 - 调用应用程序。这会导致上述错误。
我的假设正确吗?
我该如何解决这个问题?
你完全正确,你的编排基本上是在你的发送端口中抛出消息并继续,但你可以改变这种行为,我会给你一个非常简单的解决方案,它是
* 像这样设置你的逻辑发送端口
现在您的编排将等待交付 ACK
*让事情变得更干净
创建一个范围并捕获当您没有收到 ACK
时发生的 Microsoft.XLANGs.BaseTypes.DeliveryFailureException
*同时在您的 catch 块中添加一个暂停编排形状,这样您就可以在您的消息没有到达目的地时恢复您的编排:)
这适用于文件和 FTP 协议,(我没有测试其他协议)
我的发送端口和应用程序有问题:进程无法访问文件,因为另一个进程锁定了文件的一部分。
我猜问题出在 BizTalk 发送端口正在写入文件时,应用程序拾取该文件并进行处理。
我的场景:
我有一个带有文件发送端口的编排,用于将文件写入某个位置。
在这个端口之后我有另一个发送端口来调用应用程序来选择写入的文件和进程。
我认为:当文件发送端口正在写入且尚未完成时,编排不会等待而是继续下一步 - 调用应用程序。这会导致上述错误。
我的假设正确吗?
我该如何解决这个问题?
你完全正确,你的编排基本上是在你的发送端口中抛出消息并继续,但你可以改变这种行为,我会给你一个非常简单的解决方案,它是
* 像这样设置你的逻辑发送端口
现在您的编排将等待交付 ACK
*让事情变得更干净 创建一个范围并捕获当您没有收到 ACK
时发生的 Microsoft.XLANGs.BaseTypes.DeliveryFailureException*同时在您的 catch 块中添加一个暂停编排形状,这样您就可以在您的消息没有到达目的地时恢复您的编排:)
这适用于文件和 FTP 协议,(我没有测试其他协议)