gpt4 book ai didi

java - 如何使用 spring-batch 从文件夹中连续读取文件?

转载 作者:行者123 更新时间:2023-11-29 04:31:14 27 4
gpt4 key购买 nike

我正在使用 spring-batch 处理一个文件夹中的多个 csv 文件,使用 spring-batch。类似如下:

    @Bean
public ItemReader<String> reader() {
MultiResourceItemReader<String> reader = new MultiResourceItemReader<>();
reader.setResources(new Resource[] {new FileSystemResource("/myfolder/*.csv")});
reader.setDelegate(new FlatFileItemReader<>(..));
return reader;
}

作业是单线程执行器。

问题:每当文件夹中添加新文件时,如何将它们添加到列表中并使用作业自动导入?

此文件夹中每天大约有 30.000 个文件。我可以告诉 spring-batch 自动检测新文件吗?

或者我是否总是必须在作业完成后立即重新启 Action 业,以便它开始导入在作业运行时添加的文件?

最佳答案

SpringBatch 是一个“静态”的东西。一旦工作开始,它就定义了它将做什么并且不能改变(......不做讨厌的黑客攻击)。

因此,一旦作业开始,您就无法更改 MultiResourceItemReader 的定义。

因此,作业的一次执行仅处理作业启动时存在的文件,为了处理稍后到达的文件,需要触发作业的另一次执行。

理解这一点很重要,SpringBatch 不是一个作业控制系统。 SpringBatch 在这里定义作业并执行作业运行。但是,为了触发作业开始,您还需要其他东西。

如建议的那样,这可能是一个 cron-job、spring-integration、springs Scheduler-Annotations,...正如 Stimpson Cat 所建议的。

此外,根据我自己的经验,我还建议使用 Essex Boy 提出的目录结构

关于java - 如何使用 spring-batch 从文件夹中连续读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43739772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com