[英]How to make an asynchronous spring batch job with in another job
我正在嘗試在另一個作業中創建一個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>
謝謝
您可以使用SimpleAsyncTaskExecutor執行程序來避免阻塞。
我試圖創建一個單獨的線程,返回並新線程更新了詳細信息。 無法在另一個作業中創建新的異步Spring Batch作業。
簡而言之,您不能使用JobStep
。 原因是因為Job
是一個狀態機,每個Step
作為一個狀態。 為了使Job
過渡到下一個狀態(在您的用例中又完成),當前狀態(您的子作業)需要完成。
您可以從其他作業啟動作業,但要這樣做,您需要編寫Tasklet
以在新線程上啟動作業(使用TaskExecutor
)並立即返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.