2013-02-26 296 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