2016-08-11 110 views
0

我試圖在另一個作業中創建一個彈簧批異步作業。說Job-1應該完成,Job-2應該被執行。但問題是Job-1正在等待Job-2完成,而我不想要。我也使用了JobStep,但它以同步的方式發生,並沒有幫助。有人可以幫助我如何異步使用Job-1不應該等到Job-2完成嗎?下面如何在另一個作業中製作異步彈簧批作業

<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

歡迎來到Stack Overflow!請考慮添加一小段代碼,以展示如何將這些東西放在一起 - 這會提高您在此獲得幫助的機率! – lenz

+0

謝謝lenz。我已經從配置文件中添加了示例xml片段。 – user3511733

回答

0

示例XML片段,您可以使用一個SimpleAsyncTaskExecutor執行,以避免阻塞。

0

我試着創建一個單獨的線程,返回並且新的線程更新了細節。無法在另一個作業中創建新的異步彈簧批處理作業。

0

總之,您不能使用JobStep。原因是因爲一個Job是一個狀態機,每個Step作爲一個狀態。爲了讓Job轉換到下一個狀態(在您的用例中完成),需要完成當前狀態(您的子作業)。

您可以啓動其他工作職位,但要做到這一點,你需要寫一個Tasklet推出一個新的線程的工作(使用TaskExecutor),並立即返回。