nextFireTime和开始时间未对齐

时间:2013-02-26 08:54:24

标签: java quartz-scheduler cronexpression crontrigger

我正在尝试创建一个每天上午10:00运行的石英作业,但首先在上午9:30开始。 我正在使用start time和cron表达式进行如下操作:

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

cron表达式是:

0 0 10 * * ?

但是工作在上午10点开始运行(并忽略开始时间)。如果我正在查看数据库中的qrtz_triggers表,我看到start_time确实是9:30但next_fire_time是10:00。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

开始和结束时间是cron计划处于活动状态的窗口。它们没有指定触发器触发的第一个和最后一个时间。

例如,开始时间为上午9:30和下午6:30结束的每小时开火的时间表将在此期间的小时开火。

在你的情况下,这是不相关的,因为你的cron时间表是每天上午10点,这是在开始和结束时间窗口内。

如果您想在每天上午9:30和上午10点开始工作,那么最简单的方法是创建两个同时调用相同工作的cron触发器。