2013-02-26 34 views
0

我正在尝试创建一个石英作业,每天在上午10:00运行,但首先在上午9:30开始。 我使用如下的开始时间和cron表达这样做:nextFireTime和开始时间没有对齐

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

cron表达式是:

0 0 10 * * ? 

但这项工作开始于10:00 AM运行(而忽略启动时间)。如果我在db中查看qrtz_triggers表,我发现start_time确实是9:30,但next_fire_time是10:00。

我在这里做错了什么?

回答

2

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

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

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

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

+0

嗨,你知道为什么这个xml触发作业启动服务器? ' \t \t \t \t SimpleTrigger \t \t SimpleTriggerGroup \t \t SimpleJob \t \t SimpleJobGroup \t \t 2015-09-26T17:0 0:03Z \t \t <时钟守护表达> */5 * * * * \t \t \t \t' PS?。开始时间已经过去了。 – 2015-09-29 11:31:31

+0

@zeljic我不知道那个答案。将其作为新问题发布。 – darrenmc 2015-09-30 20:32:28

+0

我想我知道为什么,这可能是因为失火默认设置(MISFIRE_INSTRUCTION_SMART_POLICY)。 – 2015-10-01 17:14:15

相关问题