nextFireTime и время начала не выровнены

Я пытаюсь создать кварцевую работу, которая запускается ежедневно в 10:00, но сначала начинается в 9:30. Я делаю это, используя время запуска и выражение cron следующим образом:

CronTrigger newTrigger = newTrigger().withIdentity(jobName + i, jobName)
   .startAt(startTime).endAt(endTime).withSchedule(cronSchedule(cronExpression)
   .withMisfireHandlingInstructionFireAndProceed().inTimeZone(timeZone)).build();

Выражение cron:

0 0 10 * * ?

Но работа запускается в 10:00 (и игнорирует время запуска). Если я смотрю на qrtz_triggers таблица в БД я вижу, что start_time действительно 9:30, но next_fire_time 10:00

Что я здесь не так делаю?

1 ответ

Решение

Время начала и окончания - это окно, в котором расписание cron активно. Они не указывают первый и последний раз, когда сработает триггер.

Например, расписание, которое запускается каждый час с временем начала 9:30 и временем окончания 18:30, будет активировано в течение этого периода.

В вашем случае это не имеет значения, поскольку ваш график работы cron выполняется один раз в день в 10 часов утра, и это находится в пределах времени начала и окончания.

Если вы хотите запускать работу в 9:30 и 10:00 каждый день, то самый простой способ - создать два триггера cron, которые будут вызывать одну и ту же работу.

Другие вопросы по тегам