我在BizTalk 2010项目中有一个接收位置,有时该接收位置会接收一个空文件。接收流水线是PassThruReceive。然后我们有一个发送端口,它有一个针对该接收端口名称的筛选器。因此,我们要做的就是将文件从接收位置移动到发送位置。
我遇到的问题是,如果我们在接收位置得到一个空文件,我的客户端希望该文件仍然被移动到发送端口。我知道开箱即用,文件适配器丢弃空文件,并向事件日志写入一个事件,声明它已被删除。
我关注了一些文章,这些文章展示了一个定制的文件适配器来完成这个任务。我已经在这个自定义适配器上取得了一些成功。该文件将被拾取。由BizTalk接收,发送端口成功发送文件。然而,即使使用这种解决方案,我在接收端也遇到了文件被锁定且无法删除的问题。我关注了关于这个主题的各种文章,每次当文件被锁定且无法删除时,我都会遇到同样的问题。
我的问题是。即使正在调用batchMessage.Message.BodyPart.Data.Close();
,流仍然是锁定的。有没有办法让我找到BizTalk锁定文件的其他地方?有没有其他方法来处理这个问题?
我关注的一篇文章位于以下位置:http://biztalkwithshashikant.blogspot.com/2011/04/processing-empty-files-in-biztalk.html
发布于 2013-12-10 16:33:03
在我看来,您在运行自定义文件适配器多服务器时遇到了问题。我打赌您在BizTalk组中运行多台服务器?
我自己没有做到这一点,但我听说让适配器在多服务器上流畅地运行是BizTalk中最难做的事情之一。诀窍是找到一种方法,能够在同一个BizTalk主机的多个实例之间分担负载。
当实例仅在1台服务器上运行而不是在2台服务器上运行时,是否仍然存在相同的问题?
发布于 2016-05-26 01:42:53
在自定义管道组件编码方法中:
IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
您应该返回pInMsg,而不是设置为null,并且.BodyPart流位于末尾。如果pInMsg为空,BizTalk将以静默方式丢弃该消息。您不需要关闭它,但您需要将它移到末尾,以便让BizTalk知道您已读取并处理了所有内容。
发布于 2017-07-12 12:33:04
解决此问题的一种方法是使用FTP适配器来拾取文件,FTP适配器不会丢弃空文件。
对于创建文件的系统来说,它很可能仍然是一个文件位置,但也可以通过FTP访问。
https://stackoverflow.com/questions/20474225
复制相似问题