Spring Batch DeadlockLoserDataAccessException - PullRequest
0 голосов
/ 27 февраля 2019

Я использую 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 голосов
/ 27 февраля 2019

RetryPolicy в шаге, ориентированном на фрагмент, не применяется к считывателю.Поэтому, если ваш читатель может выдать временное исключение, вам нужно добавить логику повторных попыток вокруг самого читателя.Это можно сделать, например, с помощью:

  • AOP, применив org.springframework.retry.interceptor.RetryOperationsInterceptor к вашему считывателю
  • или используя org.springframework.retry.support.RetryTemplate в декораторе вашего считывателя, который выберет readметод, когда он генерирует временное исключение

Подобные вопросы можно найти здесь:

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...