我的Mule ESB服务器上有一个文件夹,有几个源可以指向(一个SCP,一个SFTP以及其他)。 每当我检测到一个文件,我想将它移动到另一个目录。问题是,我正在移动部分完成的文件,导致我丢失数据。Mule ESB:如何检测部分文件以避免传输部分上传的文件?
我试过使用文件的“文件”属性,但它似乎不能可靠地工作。我试图尽可能保持延迟,因为大多数文件将是< 10kb,但有些需要大到100mb。
有没有什么办法可以知道一个文件是不是一个部分,而不是一个完整的?我知道WinSCP使用.filepart扩展名,但这只是针对一个应用程序,甚至可以在WinSCP的首选项中更改(或完全删除)该扩展名。
您使用fileAge获得了哪些可靠性问题?如果它是一个错误,也许值得打开一个JIRA @ MuleSoft?这就是说,保持延迟低和可靠性高的最佳选择是强制使用控制文件(如.filepart)并创建一个特定的过滤器来查找它。 – 2012-04-24 00:12:39
实际上,多进行一次测试,结果发现问题出在操作系统级别。在RedHat上,“上次修改时间”时间戳每更新约1000毫秒,为4kb文件创建过大的延迟时间。在Windows上更糟糕:“最后修改”仅在传输开始时设置,然后在完成时重置。 MuleSoft团队从技术上讲是正确的,可以从这个时间戳中获取fileAge,但操作系统并没有经常更新它的工作。他们应该使用文件**大小**。我会提交一份变通票。 – Bing 2012-04-24 12:59:27
这是很棒的发现。 – 2012-04-24 14:57:44