0

我正在尝试创建一个每天上午 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。

我在这里做错了什么?

4

1 回答 1

2

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

例如,开始时间为上午 9:30,结束时间为下午 6:30 的每小时触发的计划将在此期间按小时触发。

在您的情况下,这无关紧要,因为您的 cron 计划是每天上午 10 点一次,这属于开始和结束时间窗口。

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

于 2013-02-27T13:08:43.517 回答