gpt4 book ai didi

Java Camel RouteBuilder 在复制完成之前拾取文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:12 26 4
gpt4 key购买 nike

我正在使用 Ubuntu(以防它会有所作为)并且我正在尝试使用 Camel 将文件从一个文件夹发送到处理器。但问题是,当我将此文件保存在文件夹中时(大约需要 5-10 秒),Camel 会立即将其拾取。为了模拟这个过程,我将 gedit 与包含 ~500k 行的 txt 文件一起使用,因此需要一些时间来保存。

我试过添加选项:

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。

最佳答案

查看 documentation :

Avoid reading files currently being written by another application Beware the JDK File IO API is a bit limited in detecting whether another application is currently writing/copying a file. And the implementation can be different depending on OS platform as well. This could lead to that Camel thinks the file is not locked by another process and start consuming it. Therefore you have to do you own investigation what suites your environment. To help with this Camel provides different readLock options and doneFileName option that you can use. See also the section Consuming files from folders where others drop files directly.

所以我认为 doneFileName 选项可以解决您的问题。

关于Java Camel RouteBuilder 在复制完成之前拾取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com