Spring 有没有办法通过检测ACK文件来处理文件

Spring 有没有办法通过检测ACK文件来处理文件,spring,apache-camel,spring-camel,Spring,Apache Camel,Spring Camel,我有一个应用程序,定期将文件放在一个文件夹中。 总是会出现两个文件,一个名为ACK+文件名且为空,另一个只是文件名,这一个是数据文件 我从一些人那里听说,在Camel中有一种方法可以通过检测ACK来处理我的文件 我目前正在做的是检测ACK文件,然后触发一个进程,该进程将获取数据文件并对其进行处理。但是有了这个,我的代码就不能进行工作单元测试了 但是,如果可能的话,我更希望有一个路由来检测我的ACK,但用数据文件触发这个过程 这可能吗 以下是我的实际路线: @Component public cl

我有一个应用程序,定期将文件放在一个文件夹中。 总是会出现两个文件,一个名为ACK+文件名且为空,另一个只是文件名,这一个是数据文件

我从一些人那里听说,在Camel中有一种方法可以通过检测ACK来处理我的文件

我目前正在做的是检测ACK文件,然后触发一个进程,该进程将获取数据文件并对其进行处理。但是有了这个,我的代码就不能进行工作单元测试了

但是,如果可能的话,我更希望有一个路由来检测我的ACK,但用数据文件触发这个过程

这可能吗

以下是我的实际路线:

@Component
public class MyRoute extends RouteBuilder {
    public static final String ROUTE_NAME = "myRoute";

    private final Processor myProcessor;

    @Autowired
    public MyRoute(@Qualifier("my.processor") Processor myProcessor) {
        this.myProcessor= myProcessor;
    }

    @Override
    public void configure() throws Exception {

        from("file://{{data.input.dir}}?moveFailed=errors&delete=true&include=ACK.*").routeId(ROUTE_NAME)
                .choice()
                    .when(header("CamelFileName").startsWith("ACK"))
                    .process(myProcessor)
                .end();
    }
}
编辑:
使用doneFileName选项找到解决方案正如您自己发现的,Camel可以使用doneFileName选项自动处理此问题

您根本不必处理ACK文件

但结果是:如果ACK文件丢失,则不会处理数据文件,因为Camel将未完成文件的数据文件视为仍在传输/写入过程中