我有一個彈簧批處理作業,它讀取,轉換並寫入Oracle數據庫。我通過CommandLineJobRunner實用程序(使用由maven shade插件生成的fat jar +依賴項)運行作業;由於「java堆內存限制已達到」,作業隨後中途失敗,並且作業未標記爲「失敗」,而是仍顯示「已啓動」狀態。無法重新啓動Spring批處理作業
我試圖用同樣的工作參數(如文檔建議)重新運行工作,但是這給了我這個錯誤:
5:24:34.147 [main] ERROR o.s.b.c.l.s.CommandLineJobRunner - Job Terminated in error: A job execution for this job is already running: JobInstance: id=1, version=0, Job=[maskTableJob]
org.springframework.batch.core.repository.JobExecutionAlreadyRunningException:一JobInstance:id = 1,version = 0,Job = [maskTableJob] at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:120)〜[我已經嘗試了各種各樣的東西(比如手動的s(s))。將狀態設置爲FAILED,使用-restart參數)但無濟於事。有沒有什麼我在這裏失蹤,因爲我認爲春季批次的一個優點是它能夠重新開始他們離開的工作.... !!?
重新運行該作業將無法使用相同的參數。將當前時間添加爲重新運行的參數。請參閱http://www.mkyong.com/spring-batch/spring-batch-a-job-instance-already-exists-and-is-complete-for-parameters/。另外結帳的文檔:http://docs.spring.io/spring-batch/reference/html/configureJob.html#d5e1320 –
是的,我知道,但我需要重新運行一個特定的工作,因爲我希望它繼續下去它離開的地方。我的工作處理TB行,可能需要幾天的時間才能運行,所以我確實希望每次都從頭開始重新開始該死的事情:-) –
我認爲步驟中的塊處理應該處理這樣的事情 –