【问题标题】:Mule ESB: How can I detect partial files to avoid transferring partly-uploaded files?Mule ESB:如何检测部分文件以避免传输部分上传的文件?
【发布时间】: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


【解决方案1】:

我自己解决了问题。

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

【讨论】:

  • 嗨费尔南多,很抱歉回复晚了,才看到你的评论。我正在使用一个自定义转换器来检查文件大小而不是最后修改时间。 (检查大小 -> 睡眠 X 毫秒 -> 再次检查大小:如果大小相同,则假设完成。)祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多