После обработки всех 5 элементов со сценарием неудачи / успеха, затем повторите попытку через некоторое время
Функции отказоустойчивости (пропуск и повтор) выполняются для элементов внутри фрагмента, а не для всего фрагмента. Таким образом, невозможно обработать все элементы (где некоторые из них могут потерпеть неудачу), , а затем после обработки всего фрагмента, повторите неудачные. При указании политики повтора эта политика будет применяться к элементам, а не ко всему куску.
Я использовал RetryTemplate, но там он сразу же пытается исключить элемент
Вы можете установить BackoffPolicy
в шаблоне повторных попыток, и между каждой попыткой повторения будет период задержки (вместо немедленной повторной попытки). Но опять же, эта политика будет применяться для повторяющегося элемента, а не для всего фрагмента.
Один из методов, который вы можете использовать (поскольку входные данные являются таблицей базы данных), представляет собой вариант «шаблона индикатора процесса» (показан в этом примере ). Идея состоит в том, чтобы использовать флаг, чтобы указать записи для обработки. Ваша работа должна читать только те записи, которые нужно обработать, помечать успешные записи как обработанные (обновить флаг) и пропущенные как необработанные (или просто не обновлять флаг, поскольку по умолчанию установлено значение false). Таким образом, пропущенные записи будут частью ввода следующего запуска задания и будут повторены по проекту.
Надеюсь, это поможет.