Spring SimpleTriggerContext получить правильный nextExecutionTime - PullRequest
0 голосов
/ 16 мая 2019

У меня есть работа, которая будет выполняться каждые 10 минут.Я не хочу использовать Spring Scheduler, основываясь на последнем запуске задания, следующее задание будет запущено по расписанию.Предположим, что первое задание выполняется в 10:15, последующее задание должно быть выполнено в 10:25.Когда я гуглил, я видел сообщения с nextExecutionTime.Когда я использую nextExecutionTime, моя последующая работа выполняется в 10:20 вместо 10:25.Ниже приведен мой код. Может ли кто-нибудь дать представление о том, как я могу выполнить свою работу точно через 10 минут после последнего запуска.

CronTrigger trigger = new CronTrigger("0 0/10 * * * ?");
SimpleTriggerContext triggerContext = new SimpleTriggerContext();
triggerContext.update(Date.from(ZonedDateTime.now().toInstant()), Date.from(ZonedDateTime.now().toInstant()), Date.from(ZonedDateTime.now().toInstant()));
Date nextFireAt = trigger.nextExecutionTime(triggerContext);
System.out.println(nextFireAt);

1 Ответ

0 голосов
/ 16 мая 2019

Можете ли вы попробовать ниже.Ниже приведена последовательность.

  1. Получите дату сейчас.
  2. Добавьте 10 минут к дате и получите новую обновленную дату
  3. Обновите подобный triggerContext.update(ноль, ноль, дата, в которую вы добавили 10 минут);
...