我正在使用Spring Batch进行分区。 最初,我遇到了DeadlockLoserDataAccessException,然后将步骤配置为FaultTolerant,请参见以下代码-
Step masterCalculationStep = stepBuilderFactory.get("STEP_1")
.<Map<Long, List<CostCalculation>>, List<TempCostCalc>>chunk(1).reader(reader)
.processor(processor)
.writer(writer)
.faultTolerant()
.retryLimit(5)
.retry(DeadlockLoserDataAccessException.class)
.build();
但是现在我们又遇到了一个例外-
org.springframework.batch.core.step.skip.NonSkippableReadException: 读取过程中不可跳过的异常
不知道为什么会出现这种新异常以及如何解决它?
答案 0 :(得分:1)
面向块的步骤中的RetryPolicy
不适用于阅读器。因此,如果您的阅读器可能会引发短暂异常,则需要自己在阅读器周围添加重试逻辑。例如,可以使用以下方法完成
org.springframework.retry.interceptor.RetryOperationsInterceptor
应用于读者来实现org.springframework.retry.support.RetryTemplate
来引发暂时异常时重新绑定read
方法的读者类似的问题可以在这里找到:
希望这会有所帮助。