Spring Batch DeadlockLoserDataAccessException

时间:2019-02-27 09:41:44

标签: spring-batch

我正在使用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:   读取过程中不可跳过的异常

不知道为什么会出现这种新异常以及如何解决它?

1 个答案:

答案 0 :(得分:1)

面向块的步骤中的RetryPolicy不适用于阅读器。因此,如果您的阅读器可能会引发短暂异常,则需要自己在阅读器周围添加重试逻辑。例如,可以使用以下方法完成

    通过将org.springframework.retry.interceptor.RetryOperationsInterceptor应用于读者来实现
  • AOP
  • 或通过在您的读者的装饰器中使用org.springframework.retry.support.RetryTemplate来引发暂时异常时重新绑定read方法的读者

类似的问题可以在这里找到:

希望这会有所帮助。