【问题标题】:apache camel ftp: how to prevent ftp component to process file when that file being writtenapache camel ftp:如何防止ftp组件在写入文件时处理文件
【发布时间】:2020-05-26 07:15:17
【问题描述】:

在我的骆驼应用程序中,它是来自 ftp 服务器的进程文件。当我测试时,我发现在文件上传期间,我的路线开始拾取该文件并进行处理。我已将 readLock 设置为“已更改”,延迟为“60000”,我的文件约为 500m。我有什么遗漏吗?

【问题讨论】:

  • 请注意,更改 FTP 服务器的读取锁定通常只有 hh:mm 时间(而不是秒),因此它通常无法如此快速地检测到更改。对于 FTP 传输,如果使用临时名称写入文件,然后在完成后重命名文件,或者使用额外的标记文件(完成文件)来指示何时准备好下载,则它总是更好。
  • 来自骆驼文档,我找到了markerFile - Camel creates a marker file (fileName.camelLock) and then holds a lock on it. This option is not available for the FTP component,这是否意味着标记文件在我的情况下无法使用 - ftp 组件。
  • 如何实现if the file is written using a temporary name and then renamed when done
  • 它是上传/写入这些文件的另一个系统。您正在谈论下载文件。您是否同时使用 Camel 进行上传和下载?如果是这样,请阅读有关临时文件的文档。
  • 是的,还有另一个系统可以上传文件。我只使用骆驼下载文件。所以我想将 readLockCheckInterval 设置为 1 分钟可以帮助我解决问题。

标签: apache-camel integration camel-ftp


【解决方案1】:

请注意,delay 选项只是一个固定间隔,不与 readLock“耦合”。

readLock 选项changed每秒检查文件大小是否已更改。对于缓慢的上传,这可能是仍在上传的文件已经被消耗的原因。

您可以尝试readLockCheckInterval 提高到 1 秒以上。

请参阅Camel FTP docs 了解更多详情和选项(选项readLock

【讨论】:

  • This interval is used for sleeping between attempts to acquire the read lock. 所以在每次检查期间,检查机制似乎不应该改变。
  • 是的,例如,如果使用 hh:mm 的 Claus 注释适用于您的情况,您必须将 readLockCheckInterval 设置为至少 1 分钟才能识别仍在上传的文件。然后,如果文件大小发生变化,Camel 会每分钟检查一次,并继续这样做,直到两次检查之间文件大小没有变化。这显然会导致文件消耗明显延迟
猜你喜欢
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多