Весенний пакет с программой записи в Kafka, как убедиться, что чтение не выполняется, пока окончательная обработка списка не завершена - PullRequest
0 голосов
/ 29 июня 2019

У меня есть запланированный fw планировщик, в котором кварц выполняет триггер, который запускает весеннее пакетное задание, которое читает из базы данных и записывает в тему Kafka, чтение и запись выполняются кусками.

Назначение темы kafka имеетпотребитель, который выполняет бизнес-логику на полученных данных.В теме используется несколько разделов и несколько потребителей.

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

Таким образом, в основном кварц закончитсязапуск задания до полной обработки предыдущего задания.

Как убедиться, что задание не запускается и не запускается, когда наступает следующий запланированный срок, если предыдущее задание еще не завершено.Завершение работы не ограничивается групповой записью весны в тему кафки, но бизнес-логин на стороне слушателя обрабатывает все сообщение.

Постановка бизнес-задачи:

Допустим, есть 10000 заказов, которые былизаказ был возвращен и требует отмены с последующим электронным письмом к клиентам.

Идея состоит в том, что планировщик будет продолжать искать заказы с задержкой заказа каждые 30 минут и писать в тему, прослушиваемую бизнес-службой, для отмены заказов и отправкиэлектронные письма.

Теперь, если 10000 записей записаны в момент времени 0 в теме и в момент времени 30, если бизнес-служба еще обрабатывает 2000 заказов.Поскольку планировщик сработает в момент времени 30, он найдет 2000 заказов, которые все еще упорядочены, и запишет их в одну и ту же тему, что приведет к тому, что слушатель обработает эти заказы дважды.Со временем это приведет к накоплению больших данных и накладным расходам на бизнес-логику.

Требуемое решение:

Как убедиться, что не выполняется чтение в весеннем пакете, если слушатель все еще обрабатываетпредыдущий запрос на работу.Также поставить в очередь задание, запущенное так, чтобы его можно было запустить после завершения предыдущего задания.Постановка в очередь будет производиться только в случае срабатывания кварца и только один раз, потому что этого достаточно для считывания подходящих данных.

Любое предложение или рекомендация будут высоко оценены.

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