1
當BJ當前正在運行且服務器已停止時,即使在服務器停止後,Spring Batch Admin中的BATCH JOB狀態仍會顯示其RUNNING,它需要失敗BatchJob - 服務器停止時BatchJob仍在運行
請幫忙嗎?我們是否需要手動處理它,或者我們可以實現它的開箱即用。 需要幫助嗎?
當BJ當前正在運行且服務器已停止時,即使在服務器停止後,Spring Batch Admin中的BATCH JOB狀態仍會顯示其RUNNING,它需要失敗BatchJob - 服務器停止時BatchJob仍在運行
請幫忙嗎?我們是否需要手動處理它,或者我們可以實現它的開箱即用。 需要幫助嗎?
作業存儲庫(數據庫實現)反映了最後的「已知」狀態。因此,在作業正在運行且JVM崩潰的情況下,它將永遠不會在數據庫中更新。
如果數據庫與JVM「不同步」,那麼該過程需要是手動過程,但似乎並沒有開箱即用的解決方案。最簡單的解決方案是在啓動時執行腳本,檢查批處理表是否有任何RUNNING作業,然後「失敗」。
update batch_job_execution set STATUS = 'FAILED', EXIT_CODE = 'FAILED', EXIT_MESSAGE = 'FORCED UPDATE' where job_execution_id in (select job_execution_id from batch_job_execution where status = 'RUNNING');
在這種情況下,您需要考慮的一件事是如果JobRepository表和與它們關聯的作業與另一個JVM共享。在這種情況下,您可能希望執行一次合格評估,以評估作業是否仍超出其所有歷史記錄的最大運行時間。 (具有max()的子查詢end_time - 用於相同job_name的create_time)