繁体   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