1

我的 Mule ESB 服务器上有一个文件夹,可以指向多个来源(一个 SCP、一个 SFTP 以及其他)。 每当我检测到一个文件时,我都想将它移动到另一个目录。问题是,我正在移动部分完成的文件,导致我丢失数据。

我试过使用文件的“fileage”属性,但它似乎不能可靠地工作。我试图尽可能地降低延迟,因为大多数文件都小于 10kb,但有些文件需要大到 100mb。

有什么方法可以知道文件是部分文件还是完整文件? 我知道 WinSCP 使用 .filepart 扩展名,但这仅适用于一个应用程序,即使这样,也可以在 WinSCP 的首选项中更改(或完全删除)该扩展名。

4

1 回答 1

2

我解决了我自己的问题。

通过更多测试,结果发现问题出在操作系统级别。在 RedHat 上,“Last Modified”时间戳仅每 ~1000 毫秒更新一次,这对 4kb 文件造成了太大的延迟。在 Windows 上更糟糕的是:“最后修改”仅在传输开始时设置,然后在传输完成时重置。MuleSoft 团队从这个时间戳中提取 fileAge 在技术上是正确的,但是操作系统没有经常更新它以使其正常工作。他们应该改用文件大小。我将提交一份临时工单。

于 2012-04-24T13:00:12.853 回答