В моем конкретном сценарии я должен сохранять огромные объекты, считанные из файлов в базу данных, но мой интервал фиксации настроен с value = 1
. Также я не совсем уверен, что обработчик делегата в используемом CompositeItemProcessor
идемпотент. Мой вопрос в том, есть ли способ предотвратить потраченное время на переработку и избежать многих неиспользуемых запросов к db. Я также хочу использовать SkipListener для регистрации ошибок при чтении/обработке/записи в конкретной таблице и подозревать, что такая конфигурация (без повторной обработки) не соответствует этому.Есть ли способ предотвратить пакет от двойной обработки одного и того же фрагмента/элемента при пропуске?
Я использую весеннюю партию 2.1.9.
Заранее спасибо.
____________________________ UPDATE 07-05-2016 ____________________________
После нескольких дней исследований я понял, что это концептуальные споры между некоторыми пользователями и разработчиками пружинными.
ItemWriter#write
Метод получает список элементов:я теперь, что такое поведения ковшики, как разработанные на пропущенном исключении выброшенного во время написания фазы, как сказано @MichaelMinella в комментариях для ответа в этом 2014 post знаю. Не обойдя через них по одному, нам не удастся определить, какой из в списке выбрал исключение в записи.
Так нет возможности еще в рамках обнаружить не удалось деталь без сканирования для всего списка (даже если размер порции составляет). Внутреннее поведение структуры для этого использует FaultTolerantChunkProcessor
, а RetryTemplate
описано в this 2013 post. Более подробное обсуждение этого вопроса можно найти на этом spring batch forum 2012 post.
Я ожидал, что это поведение тоже @joshiste, но на практике структура всегда перерабатывает список, кэшированный при чтении, и обрабатывает мини-куски для каждого элемента, чтобы узнать, какой элемент отвечает за ошибку, даже если этот список содержит только один элемент. Я хочу знать, как переопределить это поведение или настроить пакет, чтобы пропустить эту дорогостоящую попытку. Возможно, это невозможно, если я хочу использовать SkipCheckListener для регистрации ошибок при обработке. – guilhermerama