[英]Spring Batch - Recovery after Error
我有一個帶有ItemProcessor
的Spring Batch作業,可能會因Exception而失敗。 如果發生這種情況,我將擁有一個處理恢復的ItemProcessListener
(將項目標記為失敗,以便在下次運行中不會將其拾取)。
該解決方案的工作原理類似於“常規”異常,但是我遇到了java.lang.OutOfMemoryError: Java heap space
最近發生錯誤,其中未調用onProcessError()
並且在下次運行中將不排除該項目。
但是,我注意到調用了JobExecutionListener.afterJob()
,在這里我可以獲取失敗執行的作業參數,並再次查詢該執行的所有項目並將它們標記為失敗。
有沒有更好的方法來解決我的問題?
基本上onProcessError
是名字不正確的。 它僅偵聽Exception
,而不偵聽Error
。 Java強烈建議您不要通過catch塊來處理Error
。 原因是,jvm通過Error
發出故障,該故障不是在編程中而是在vm的配置中。 應該將它們作為一個有力的指標,您的虛擬機設置需要更正。
在您的情況下,您將編寫一個OutOfMemoryError
,如果您的內存需求高於已通過-Xmx / Xms startparameters分配給Java作業的內存,則會發生該OutOfMemoryError
。 您要么分配了很少的內存,要么消耗了太多內存。 這應該是固定的,不能通過某些技術技巧來解決。
首先,您應該找出導致此錯誤的原因。 也許您只需要分配更多的內存,可能您的某些算法在內存消耗方面過於貪婪,而且並非不可能,您將內存泄漏作為根本原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.