【发布时间】:2012-05-04 06:15:09
【问题描述】:
我的 Mule ESB 服务器上有一个文件夹,可以指向多个来源(一个 SCP、一个 SFTP 以及其他)。 每当我检测到一个文件时,我都想将它移动到另一个目录。问题是,我正在移动部分完成的文件,导致我丢失数据。
我尝试过使用文件的“fileage”属性,但它似乎不能可靠地工作。我正在尝试尽可能降低延迟,因为大多数文件都小于 10kb,但有些文件需要达到 100mb。
有什么方法可以知道文件是部分文件还是完整文件?我知道 WinSCP 使用 .filepart 扩展名,但这仅适用于一个应用程序,即使这样,该扩展名也可以是在 WinSCP 的首选项中更改(或完全删除)。
【问题讨论】:
-
您在使用 fileAge 时遇到了哪些可靠性问题?如果它是一个错误,也许值得打开一个 JIRA @MuleSoft?也就是说,保持低延迟和高可靠性的最佳选择是强制使用控制文件(如 .filepart)并创建一个特定的过滤器来查找它。
-
实际上,经过更多测试,问题出在操作系统级别。在 RedHat 上,“Last Modified”时间戳仅每 ~1000 毫秒更新一次,这对 4kb 文件造成了太大的延迟。在 Windows 上更糟糕的是:“最后修改”仅在传输开始时设置,然后在传输完成时重置。 MuleSoft 团队从这个时间戳中提取 fileAge 在技术上是正确的,但是操作系统没有经常更新它以使其正常工作。他们应该改用文件 size。我将提交一份临时工单。
标签: file partial esb file-transfer mule