簡體   English   中英

Spring Batch-錯誤后恢復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM