我正在尝试使用 Spring Boot 和 Spring Batch 实现并行处理。此批处理将从 UI 触发,并带有一些必需的参数
我需要根据请求参数创建步骤,我尝试如下,
其余控制器看起来,
JobParameters jobParameters = new JobParametersBuilder().addLong("JobID",System.currentTimeMillis())
.addString("fileName", filename)
.addString("buisinessDate", model.getGeneralServiceModel().getBusinessDate())
.addString("source", model.getGeneralServiceModel().getSource())
.toJobParameters();
jobLauncher.run(job, jobParameters);
和批处理配置:
Flow masterFlow = (Flow)new FlowBuilder("masterFlow").start(stepOne()).build();
List<Step> steps = new ArrayList<Step>();
for (ConcurrentLinkedQueue date : taskOne.readFile()) {
steps.add(createStep(date));
}
return jobs.get("myJob")
.start(masterFlow)
.next(createParallelFlow(steps))
.end()
.build();
masterFlow 将作业参数读入其变量中,readFile() 给出列表(基于此,必须创建步骤),为此需要 jobParameters。
问题是:
在启动我的应用程序本身时, readFile() 正在执行。但是我需要在作业通过 RestController 触发时执行它,因为它具有所需的参数。
如何在启动应用程序时停止此执行?