使用 apache camel 只处理修改过的文件

Processing only modified files using apache camel

我有新的要求要使用 apache camel 来实现。

  1. 处理文件而不移动它
  2. 仅当文件被修改时才处理文件
  3. 可以再次处理同一个文件
  4. 它不应该处理新文件。

由于我是 Apache Camel 的新手,我探索了文件组件的功能并获得了一些示例,并且能够使用以下代码实现前 3 点。

from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true")
    .to("file:C://outputFolder");

然而无法做到第四点。上面的代码获取刚刚创建的新文件(意思是创建日期和修改日期相同)。

有人可以帮助我实现第 4 点(即它不应该在该目录中获取新文件)

正如我所见,无法查看文件在 Camel 中的创建时间。这里可能的解决方法是使用重命名方法以及 antInclude 选项,例如

from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true&antInclude=*.modified")
    .to("file:C://outputFolder");

在这种情况下,需要创建新文件,使用另一个扩展名,例如myfile.created,然后在第一次修改后重命名为myfile.modified

从 Camel 3.0 开始您可以使用 file-watch Component. The solution can be similar to Create snapshot of file when modified 示例。

from("file-watch:C://inputFolder?events=MODIFY&recursive=false")
    .to("file:C://outputFolder");