Biztalk 使用FTP适配器的事务

Biztalk 使用FTP适配器的事务,biztalk,Biztalk,我想从服务器中提取一些东西(不删除),在管道组件中解析文件,处理文件,如果一切顺利,我希望适配器删除文件 我正在考虑将解析加入到管道上下文中,这样,我就可以想象如果无法解析文件,文件将无法到达消息框,因此它将被视为失败的事务,问题是,适配器是否会参与此事务?换句话说,我的目标是指示适配器仅当管道处理成功(事务提交)时才从服务器上删除文件(事务回滚,没有消息提交到消息框) 这是可以实现的吗?提前谢谢我想做个小实验就可以了。BizTalk作为其性质的一部分,将不会删除任何内容,直到它被发送到消息框。

我想从服务器中提取一些东西(不删除),在管道组件中解析文件,处理文件,如果一切顺利,我希望适配器删除文件

我正在考虑将解析加入到管道上下文中,这样,我就可以想象如果无法解析文件,文件将无法到达消息框,因此它将被视为失败的事务,问题是,适配器是否会参与此事务?换句话说,我的目标是指示适配器仅当管道处理成功(事务提交)时才从服务器上删除文件(事务回滚,没有消息提交到消息框)


这是可以实现的吗?提前谢谢

我想做个小实验就可以了。BizTalk作为其性质的一部分,将不会删除任何内容,直到它被发送到消息框。也就是说,persistence可能发生在管道执行之前。因此,接收适配器接收该文件,将其保存到消息框并删除该文件。消息可能随后在管道中失败。如果是这种情况,则该邮件的格式不正确,随后必须由发件人重新提交。如果要保留此邮件,则必须使用失败的邮件路由将其拾取。然后可以将其写入目录并实现重新提交模式。或者,您可以通过失败的消息路由选择文件并将其放回FTP服务器(这是一种补偿步骤)


另一方面,如果管道失败并且消息没有从服务器上删除。。。你很好。

我不熟悉Biztalk,但我在事务框架中使用FTP。提交时删除不是严格安全的策略。对于两阶段提交,服务器上需要一个临时目录。在提交阶段1中,将文件移动到临时目录。在提交阶段2中,从temp中删除该文件。要回滚,请将文件从临时文件夹移回原始文件夹。即使这样也不能避免突然断电(即自动回滚),但这可能是最好的。同意,我可能会这样做,感谢inputHi,Chris,我实际上在这里做了一些测试,不幸的是,适配器在您提到的第一个场景中表现良好。我还了解了是否有可能在一些宏中使用before-get、after-get命令,但也没有运气。所以现在我放弃这个想法,调用一个助手组件来删除管道组件中的文件。如果文件在管道中失败,解决方案是什么?发件人是否必须在更正后重新发送文件?您可以使用失败的消息路由来拾取文件并将其路由到发件人的某种通知。只是好奇细节。