Обработка исключений Spring Batch

В настоящее время я работаю с весенней партией в первый раз. В весенней партии я установил уровень фиксации на 1000, что дало мне лучшую производительность, но теперь у меня есть проблемы с идентификацией поврежденного элемента или элемента исключения. Нам нужно отправить обновление почты со строкой записи или номером элемента с данными об исключении.

Я пробовал прослушиватель элементов, прослушиватель фрагментов, прослушиватель шагов и прослушиватель заданий, но не могу понять, как получить эту информацию из контекста прослушивателя выполнения при создании почты в прослушивателе заданий. Я могу получить информацию об исключении и не могу отследить, какая запись имеет проблему и количество элементов в чанке. Например, если у меня есть 1000 строк в файле или БД и уровень фиксации 100. Если у нас есть проблема в 165 элементе. Мне нужно получить номер строки 165 в любом прослушивателе, чтобы я мог прикрепить его в контексте для заполнения информации журнала, чтобы иметь быстрое время для исправления проблемы перед повторной обработкой. Я искал, но я не мог получить предложение или идею. Я полагаю, что это будет распространенная проблема при фиксации фрагмента больше 1. Пожалуйста, предложите лучший способ справиться.

заранее спасибо


person Krishna Moorthy Seetha Raman    schedule 02.09.2016    source источник


Ответы (2)


Вы захотите выполнить проверки, которые могут вызвать проблему в процессоре, и создать из них элемент ошибки, который будет сохранен в своей собственной таблице/файле. Некоторые ошибки неизбежны, и, к сожалению, вам придется выполнять отладку вручную в этом фрагменте.

Изменить: чтобы найти диапазон фиксации, вам нужно сохранить порядок. Если вы используете FlatFileItemReader, он сохранит для вас строку, если ваш POJO реализует ItemCountAware. Если вы работаете с БД, вы должны убедиться, что запрос сохраняет порядок с порядком по уникальному индексу. Затем вы сможете отследить фрагмент, проверив, где read_count из таблицы batch_step_execution.

person Serge    schedule 02.09.2016
comment
Спасибо за ответ. Я не выполню задание из-за самой первой возникшей проблемы, но, например, в файле с миллионом записей, если 1000-й коммит не удастся, я могу понять его 999 * 1000 +? (мне нужен этот номер) - person Krishna Moorthy Seetha Raman; 02.09.2016
comment
Также мне нужно отправить полную информацию в службу поддержки, чтобы при необходимости вручную исправить ее перед перезапуском. Развернуться следует как можно скорее - person Krishna Moorthy Seetha Raman; 02.09.2016
comment
Спасибо. Счетчик чтений будет равен целому числу уровня фиксации, если его 100... Счетчик чтений будет кратен 100. Проблема может быть в элементе 59. Как получить этот номер 59 (если возможно данные) в прослушивателе выполнения задания - person Krishna Moorthy Seetha Raman; 02.09.2016