ApacheCamel:当我作为独立java项目运行时轮询旧文件。有没有办法只轮询新文件

ApacheCamel:当我作为独立java项目运行时轮询旧文件。有没有办法只轮询新文件,java,apache-camel,Java,Apache Camel,我需要将文件从本地特定文件夹位置传输到其他位置。我使用ApacheCamel作为一个独立的项目,下面是我的代码 from(file:<location>?noop=true).to(file:<location>) from(文件:?noop=true).to(文件:) 每当我作为一个Java项目运行时,它都会不断地轮询上一次运行时移动的旧文件。有没有办法只轮询新文件,而且我无法记录文件传输 例如: 第一次运行时:源目录 Folder1/image1 FFolder

我需要将文件从本地特定文件夹位置传输到其他位置。我使用ApacheCamel作为一个独立的项目,下面是我的代码

from(file:<location>?noop=true).to(file:<location>) 
from(文件:?noop=true).to(文件:)
每当我作为一个Java项目运行时,它都会不断地轮询上一次运行时移动的旧文件。有没有办法只轮询新文件,而且我无法记录文件传输

例如: 第一次运行时:源目录
Folder1/image1
FFolder1/image1 & image2
Folder1/image1
from(文件:Folder1?noop=true)。to(文件:Folder2)
将图像1移动到Folder2位置,图像1将保留在Folder1中。 现在,我将再次运行java文件,并在源目录中添加了一个文件image2
FFolder1/image1 & image2
FFolder1/image1和image2


现在在本例中,我只希望处理image2文件,但代码也处理image1

由于noop=true,在启动带有camel路由的java进程后,文件仍保留在源文件夹中。当您重新启动java程序时,它不会记住任何内容,因此会再次轮询源文件夹中的所有文件。如果路由持续运行且未重新启动,则noop=true将有助于解决此问题

您可以通过删除noop来避免这种情况,这样camel路由会将处理过的文件从源文件夹移动到.camel文件夹或您指定的任何文件夹


解决方案取决于你如何使用它。如果严格要求不从源文件夹移动文件,则您需要在使用目标文件夹的使用者端记住,这样您就不会再次处理相同的文件,或者不应重新启动路由。

使用
noop=true
选项将确保不移动或重新处理文件。这些文件在别处更新了吗?这也许可以解释为什么他们会再次接受调查。这些文件不会在其他地方处理。每次运行java文件时,我都会注意到目标文件夹位置中的文件的修改时间发生了变化。您可以在进程运行时将文件移动到另一个位置,以便它们从源位置消失,使用选项
move=
James用我的场景更新了问题添加
idempotent=true
作为
noop
之后的另一个选项。无论何时
noop
设置为true,这都应该由Camel自动完成,但这可能不适用于您。