我正在使用Ubuntu (以防会产生影响),我正在尝试使用Camel从一个文件夹向处理器发送文件。但是问题是,当我在文件夹中保存这个文件时(大约需要5-10秒),Camel马上就会把它捡起来。为了模拟这个过程,我使用具有大约500 k行的gedit和txt文件,所以需要一些时间来保存。
我试过增加选项:
from("file:src/Data/new/?readLock=changed&readLockMinAge=3m")我试过用.filter(header("CamelFileLastModified").isGreaterThan(new Date(System.currentTimeMillis()-120000)))来延迟2分钟。
似乎没有什么会影响它的行为,它会立即捡起它,在处理文件时抛出一个异常,并将其移动到错误文件夹。
我知道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更多。
发布于 2016-01-25 17:06:07
看看文档
避免读取当前由另一个应用程序编写的文件-- JDK files在检测另一个应用程序当前是否正在写入/复制文件时受到了一些限制。而且,根据操作系统平台的不同,实现也是不同的。这可能导致Camel认为文件没有被另一个进程锁定并开始使用它。因此,你必须做自己的调查,什么套房你的环境。为了帮助解决这个问题,Camel提供了您可以使用的不同的readLock选项和doneFileName选项。还请参阅其他人直接删除文件的文件夹中使用文件的部分。
因此,我认为doneFileName选项将解决您的问题。
https://stackoverflow.com/questions/34998033
复制相似问题