我正在使用Asynch jobLaucher来启动 spring 批处理作业 . 我尝试并行执行相同的工作,但似乎第二次启动工作对第一份工作造成了副作用 . (似乎第一个作业的step_output的值被第二个作业覆盖 . 如果我使用Synch JobLauncher,一切都很好 .
我的问题是 . 我可以用以下方式使用jobContext吗?
MyTaskLetStep(实现StepExecutionListener):
public void beforeStep(StepExecution stepExecution) {
JobExecution jobExecution = stepExecution.getJobExecution();
ExecutionContext jobContext = jobExecution.getExecutionContext();
...
jobContext.put("step_output" ,outList);
...
}
已开始乔布斯看起来像这样:
<batch:job id="TACKJob" restartable="true" incrementer="runIdIncrementer" parent="joblistenerjob">
<batch:step id="F1" next = "F2">
<batch:tasklet ref="N_COMMAND"/>
</batch:step>
<batch:step id="F2">
<batch:tasklet ref="Z_COMMAND"/>
</batch:step>
</batch:job>
引用的tasklet bean是原型范围的bean . 他们实现了引用的StepExecutionListener .
你对这个问题有什么建议吗?
谢谢