以特定格式开头的 apache camel 文件过滤器

apache camel file filter starting with a specific format

我正在尝试将文件从一个文件夹读取到另一个文件夹。我正在使用 Apache Camel。基本配置如下

from("file:/testfolder/out/")
    .routeId("testRoute")
    .to("file:/testfolder/in/")
    .end();

我正在尝试使用 include 添加过滤器以仅选择以 test_files 开头的特定格式,如下所示:

from("file:/testfolder/out/?include=test_files*")
    .routeId("testRoute")
    .to("file:/testfolder/in/")
    .end();

以上包含无效。

我尝试使用 GenericFileFilter 如下:

@Component
public class TestFileFilter implements GenericFileFilter {
    @Override
    public boolean accept(GenericFile file) {
        if (file.getFileName().matches("^[test_files]"))
            return true;
        return false;
    }
}

如何在自定义路由中绑定此 TestFileFilter class?

由于正则表达式不匹配,

include=test_files.* 无效。在include中的*前加一个.如下图:

from("file:/testfolder/out/?include=test_files.*")
    .routeId("testRoute")
    .to("file:/testfolder/in/")
    .end();

要使用自定义过滤器,我遵循了这篇文章:https://help.talend.com/reader/SUzvVjxkFWs4p6BXVXwyHQ/uqoSuaP4sXgDRWPG4JSPvA

在路由中定义一个bean class:

@Bean
    TestFileFilter testFileFilter() {
        return new TestFileFilter();
    }

然后修改你的路线如下图:

from("file:/testfolder/out/?filter=#testFileFilter")
    .routeId("testRoute")
    .to("file:/testfolder/in/")
    .end();