多次运行弹簧批处理作业

Vic*_*cky -1 java spring spring-batch spring-boot

我使用以下教程使用 spring boot 创建了一个 spring 批处理作业:

https://spring.io/guides/gs/batch-processing/
Run Code Online (Sandbox Code Playgroud)

该作业正在按预期读取文件并写入数据库。

但是,现在我有一个用例可以多次运行此作业。

我有一个ArrayList参数。

我应该对工作进行哪些更改,以便我可以运行工作的次数是我的ArrayList?

pvp*_*ran 6

您可以像这样手动启动批处理作业

@Component
Class Someclass{
  ...............
     @Autowired
     private JobLauncher jobLauncher;
     @Autowired
     private Job job;  

     public void someFunction(){
       jobLauncher.run(job, new JobParameters());  
   }
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,如果批处理作业已经完成,则无法重新启动它,它会引发错误,指出状态已完成。为此,您必须将allowStartIfComplete属性设置为 true。这必须在您的批处理步骤配置中完成,就像这样

stepBuilderFactory.get("step1")
                .<Person, Person> chunk(10)
                .reader(reader())
                .processor(processor())
                .writer(writer())
                .allowStartIfComplete(true)
                .build();
Run Code Online (Sandbox Code Playgroud)