#java #spring-boot #scheduled-tasks #spring-scheduled
Вопрос:
У меня есть ниже фрагмент кода для запуска синхронизации на заданной частоте, текущая частота составляла 1 час.
@SchedulerLock(name = "userSync", lockAtMostFor = 180_000L)
@Scheduled(cron = "${user.sync.cron.expression}")
public void scheduledSync() {
logger.info("starting user sync...")
performSync();
logger.info("user sync completed!")
}
Этот фрагмент кода работал нормально в течение многих дней. Внезапно синхронизация застряла после запуска (напечатан только регистратор запуска синхронизации) и больше не выполняла последующие вызовы.
Как исправить планировщик, чтобы он работал, если одна попытка не удалась?
Комментарии:
1. Что делает функция performSync ()?
2. @SimonMartinelli вызывает LDAP, извлекает пользовательские данные и обновляет их в базе данных.
3. Потому что, если вы скажете, что «запуск синхронизации пользователей» напечатан, то он должен застрять в этом mehtod
4. @SimonMartinelli да, это так. мой вопрос в том, как оправиться от такого сценария?
5. Это зависит от того, что делает этот метод и где в этом методе он застрял