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

Apache camel 使用apache camel仅处理修改过的文件,apache-camel,spring-camel,Apache Camel,Spring Camel,我有了新的需求,需要使用ApacheCamel来实现 处理文件而不移动它 仅当文件被修改时才处理该文件 可以再次处理同一个文件 它不应该处理新文件 由于我是Apache Camel的新手,所以我研究了文件组件的特性,并获得了一些示例,并且能够使用下面的代码实现前3点 from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true") .to("file:C://outputFolde

我有了新的需求,需要使用ApacheCamel来实现

  • 处理文件而不移动它
  • 仅当文件被修改时才处理该文件
  • 可以再次处理同一个文件
  • 它不应该处理新文件
  • 由于我是Apache Camel的新手,所以我研究了文件组件的特性,并获得了一些示例,并且能够使用下面的代码实现前3点

    from("file:C://inputFolder?idempotentKey=${file:name}-${file:modified}&noop=true")
        .to("file:C://outputFolder");
    
    然而,我们无法达到第四点。上面的代码拾取刚刚创建的新文件(意味着创建日期和修改日期相同)


    有人能帮我实现第四点吗(即,它不应该在该目录中拾取新文件)

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

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

    在这种情况下,需要使用另一个扩展名创建新文件,例如
    myfile.created
    ,然后在自Camel 3.0以来首次修改后重命名为
    myfile.modified
    。解决方案可以类似于示例


    您希望如何开始这个过程?如果不第一次处理文件,则无法填充幂等项注册表。如果创建了一个新文件,然后又进行了修改,那么您是否要处理该文件?我想在部署应用程序后启动该过程。在监视目录期间,如果已创建新文件,则不应拾取该文件,因为创建和修改的日期和时间是相同的。因此,只有当它被修改时,它才应该被拾取。我计划在定向到输出目录之前,使用处理器检查是否是新文件来处理它
    from("file-watch:C://inputFolder?events=MODIFY&recursive=false")
        .to("file:C://outputFolder");