我使用的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 自动检测新文件吗?
或者我是否总是必须在作业完成后立即重新启动作业,以便它开始导入在作业运行时添加的文件?
SpringBatch 是一个“静态”的东西。一旦工作开始,它就会定义它将做什么,并且不能改变(......不做讨厌的黑客攻击)。
因此,一旦作业开始,您就无法更改 MultiResourceItemReader 的定义。
因此,作业的一次执行仅处理作业开始时存在的文件,并且为了处理稍后到达的文件,需要触发作业的另一次执行。
重要的是要了解 SpringBatch 不是作业控制系统。SpringBatch 在这里定义作业并执行作业运行。但是,为了触发要启动的作业,您还需要其他一些东西。
正如所建议的那样,这可能是一个 cron-job、spring-integration、springs Scheduler-Annotations,...正如 Stimpson Cat 所建议的那样。
此外,根据我自己的经验,我还建议使用 Essex Boy 提出的目录结构
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句