Можно ли использовать пошаговый пакет в шаге для двух читателей, один запрос которых зависит от другого? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть подпружиненная программа, которая читает базу данных, обрабатывает и записывает в базу данных. Эта программа запускается один раз в день, и я хотел бы проверить, были ли какие-либо новые записи добавлены в исходную БД. Поэтому я подумал, что, возможно, на одном шаге у меня может появиться считыватель, который извлекает последнюю метку времени из целевой БД. И используйте эту метку времени, чтобы запросить исходную БД для любых новых записей. Любые предложения по этой проблеме?

1 Ответ

0 голосов
/ 25 апреля 2019

Решение с использованием добавления столбца состояния:

Когда данные вставляются в вашу таблицу, статус должен быть «НЕ ОБРАБОТАНО». Когда ваш ItemReader читает данные, измените статус на «В ПРОЦЕССЕ», когда ваш ItemProcessor и ItemWriter завершат свою задачу, измените статус на «ОБРАБОТАНО». Таким образом, вы можете убедиться, что ваш ItemReader читает только данные «НЕ ОБРАБОТАНО».

Решение с использованием пользовательской таблицы, если вы не можете изменить исходную таблицу:

Если вы не можете изменить исходную таблицу БД, вы можете сохранить время последнего запроса в пользовательской таблице. Скажем, во время первого запуска вы можете получить все записи и сохранить время, в течение которого вы запрашиваете базу данных, в некоторой пользовательской таблице. На следующий день, когда вы запустите задание, снова получите записи со времени, которое вы сохранили в пользовательской таблице, до текущего времени. Теперь замените старую отметку времени в пользовательской таблице на текущее время.

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