我正在使用Ubuntu(如果它会有所作为)我正在尝试使用Camel从一个文件夹向处理器发送文件。但问题是,当我将此文件保存在文件夹中时(大约需要5-10秒),Camel立即将其拾取。 为了模拟这个过程,我使用带有~500k行的txt文件的gedit,因此需要一些时间来保存。
我尝试过添加选项:
from("file:src/Data/new/?readLock=changed&readLockMinAge=3m")
我尝试过使用过
.filter(header("CamelFileLastModified").isGreaterThan(new Date(System.currentTimeMillis()-120000)))
延迟2分钟。
似乎没有什么影响它的行为,它会立即拾取它,因为在处理文件时将一些检查移动到Error文件夹而引发异常。
我知道FTP文件传输存在问题,我稍后将不得不面对,但我甚至无法在本地文件系统上运行。
任何帮助将不胜感激!
解决
from("file:src/Data/new/?readLock=changed&readLockMinAge=3m")
参数实际上可以正常工作。我正在使用Jetty来运行项目,我应该在任何修改后完成整个项目的清理/安装。
我不得不将参数修改为:
from("file:src/Data/new/?readLock=changed&readLockTimeout=65000&readLockMinAge=1m")
因为它抱怨readLockTimeout应该超过readLockCheckInterval + readLockMinAge。
答案 0 :(得分:2)
避免读取当前由其他应用程序写入的文件 注意JDK File IO API在检测是否有点受限 另一个应用程序正在写入/复制文件。而且 实现可以根据OS平台而有所不同。这个 可能导致Camel认为该文件未被其他人锁定 处理并开始消费它。因此,你必须拥有自己 调查你的环境套房。帮助这个骆驼 提供不同的readLock选项和doneFileName选项 可以使用。另请参阅从文件夹中使用文件部分 其他人直接删除文件。
所以我认为doneFileName
选项可以解决您的问题。