【问题标题】:Running a spring batch job multiple times多次运行弹簧批处理作业
【发布时间】:2017-11-03 17:53:03
【问题描述】:

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

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

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

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

我有一个ArrayList 的参数。

我应该对作业进行哪些更改,以使作业的运行次数达到ArrayList 的大小?

【问题讨论】:

  • 使用ItemReaderread() 方法,一次读取列表中的一个文件,直到到达列表末尾。

标签: java spring spring-boot spring-batch


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-18
    • 2015-07-30
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多