0
我有一个复杂的作业流程,其中有3个独立的作业构建到JobStep中,然后从作业调用JobStep。这些JobSteps中将有四个将从调用作业并行运行。如何将一个简单的字符串传递给Spring批处理作业
我需要将一个字符串作为参数传递给它们。
一定程度的简化代码:
我主要如下所示:
public static void main(String[] args) {
SpringApplication.run(SomeApplication.class, args);
}
其中JobSteps的样子
@Bean
public JobStep jobStep1(<snip>){
<snip for clarity>
JobStep jobStep = new JobStep() ;
jobStep.setJob(jobs.get(jobName)
.incrementer(new RunIdIncrementer()).listener(listener)
.start(Flow1)
.next(Flow2)
.next(Flow3)
.end().build());
jobStep.setJobRepository(jobRepository);
jobStep.setJobLauncher(jobLauncher);
return jobStep;
}
运行,其余看起来像
的最高职位@Bean
public Job parentJob(<snip>) {
Flow childJobFlow = new FlowBuilder<SimpleFlow>("childJob").start(job1).build();
Flow childJobFlow2 = new FlowBuilder<SimpleFlow>("childJob2").start(job2).build();
FlowBuilder<SimpleFlow> builder = new FlowBuilder<SimpleFlow>("jobFlow");
Flow jobFLow = builder.split(new SimpleAsyncTaskExecutor()).add(childJobFlow,childJobFlow2).build();
return jobs.get("parentJob")
.incrementer(new RunIdIncrementer()).listener(listener)
.start(jobFLow)
.end().build();
}
我需要每个JobStep来获得不同的字符串。
请看看Partitioner。您可以使用它将数据传递给Step –