Spring batch 并行执行中的作业上下文[Spring批处理]

Spring batch 并行执行中的作业上下文[Spring批处理],spring-batch,Spring Batch,我使用AsynchJobLaucher启动spring批处理作业。我试图并行执行同一个作业,但似乎第二个启动的作业对第一个作业产生了副作用。(第一个作业的步骤_输出值似乎被第二个作业覆盖。 如果我使用Synch JobLauncher,一切都很好 我的问题是,我可以用以下方式使用jobContext吗 MyTaskLetStep(实现StepExecutionListener): 已启动的作业如下所示: <batch:job id="TACKJob" restartable="tr

我使用AsynchJobLaucher启动spring批处理作业。我试图并行执行同一个作业,但似乎第二个启动的作业对第一个作业产生了副作用。(第一个作业的步骤_输出值似乎被第二个作业覆盖。 如果我使用Synch JobLauncher,一切都很好

我的问题是,我可以用以下方式使用jobContext吗

MyTaskLetStep(实现StepExecutionListener):

已启动的作业如下所示:

    <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

你对这个问题有什么建议吗


谢谢

您是否尝试过将您的tasklet配置为步骤作用域?使用步骤作用域似乎很有趣。顺便说一句,步骤和原型之间有什么区别?使用步骤作用域为每个新步骤创建一个新的bean,其中与原型一样,每当请求时都会创建一个新bean。因此,使用原型时,相同的bean可以是instantia每一步不止一次。
    <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>