我使用以下教程创建了一个带有spring boot的spring批处理作业:
https://spring.io/guides/gs/batch-processing/
作业正在读取文件并按预期写入数据库。
但是,现在我有一个用例来多次运行这个作业。
我有ArrayList
个参数。
我应该对工作做些什么改变,以便我可以按照ArrayList
的大小运行工作?
答案 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();