多次运行spring批处理作业

时间:2017-06-02 10:37:50

标签: java spring spring-boot spring-batch

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

https://spring.io/guides/gs/batch-processing/

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

但是,现在我有一个用例来多次运行这个作业。

我有ArrayList个参数。

我应该对工作做些什么改变,以便我可以按照ArrayList的大小运行工作?

1 个答案:

答案 0 :(得分:4)

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

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

     public void someFunction(){
       jobLauncher.run(job, new JobParameters());  
   }
}

如果批处理作业已经完成,则只能重新启动批处理作业,它会抛出错误,说明状态为已完成。为此,您必须将allowStartIfComplete属性设置为true。这必须在您的批处理步骤配置中完成,类​​似这样

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