我正在尝试在另一个作业中创建 Spring批量异步作业。说Job-1应该完成并且Job-2应该被执行。但问题是Job-1正在等待Job-2完成,我不想要。我也使用过JobStep,但它以同步方式发生,没有用。有人可以帮助我如何异步使用Job-1不应该等到Job-2完成的地方吗?
下面的xml代码段示例<bean id="taskExecutorAsync" class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
<bean id="jobLauncherAsync" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
<property name="taskExecutor" ref="taskExecutorAsync" />
</bean>
<bean id="CreationProcess" class="test.CreationProcess">
<property name="jobLauncher" ref="jobLauncherAsync" />
<property name="jobRepository" ref="jobRepository" />
<property name="jobExplorer" ref="jobExplorer" />
</bean>
由于
答案 0 :(得分:0)
您可以使用SimpleAsyncTaskExecutor执行器来避免阻塞。
答案 1 :(得分:0)
我尝试创建一个单独的线程,返回并且新线程更新了详细信息。无法在另一个作业中创建新的异步弹簧批处理作业。
答案 2 :(得分:0)
简而言之,您无法使用JobStep
。原因是因为Job
是状态机,每个Step
用作状态。为了使Job
转换到下一个状态(在您的用例中也称为完成状态),需要完成当前状态(您的子作业)。
您可以从其他作业启动作业,但为此,您需要编写Tasklet
以在新线程上启动作业(使用TaskExecutor
)并立即返回。 / p>