2016-02-24 77 views
0

目標:我正在使用彈簧批處理數據並且我想要一個選項來停止/恢復(它從哪裏離開)。如何停止和恢復彈簧批量作業

問題:我可以向正在運行的作業發送停止信號併成功停止。但是,當我嘗試將開始信號發送到同一個作業時,它會創建一個新的作業實例並作爲新工作開始。

我的問題是我們如何才能在春季批次中爲停止的作業實現恢復功能。

回答

1

你只需要用相同的參數運行它。只要確保您沒有將作業標記爲未重新啓動,並且您沒有使用RunIdIncrementer或類似的代碼即可自動生成唯一的作業參數。

參見例如this example。第一次運行之後,我們有:

 
INFO: Job: [SimpleJob: [name=myJob]] completed with the following parameters: [{}] and the following status: [STOPPED] 
Status is: STOPPED, job execution id 0 
    #1 step1 COMPLETED 
    #2 step2 STOPPED 

和之後的第二個:

 
INFO: Job: [SimpleJob: [name=myJob]] completed with the following parameters: [{}] and the following status: [COMPLETED] 
Status is: COMPLETED, job execution id 1 
    #3 step2 COMPLETED 
    #4 step3 COMPLETED 

注意,停止步驟將被重新執行。如果您使用面向塊的步驟,請確保至少ItemReader實現ItemStream(並使用正確的語義)。

標記爲allowRestartWithComplete的步驟將始終重新運行。