2017-06-19 24 views
0

我的應用程序每天觸發三次,有時相同的調度程序在立即完成工作後運行兩次。這種行爲不一致。石英:單線程有時運行兩次

石英配置細節:

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool 
org.quartz.threadPool.threadCount=1 
org.quartz.threadPool.threadPriority=5 
org.quartz.scheduler.skipUpdateCheck=true 
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX 

觸發器:

 SCHED_NAME, TRIGGER_NAME,  TRIGGER_GROUP,  CRON_EXPRESSION, TIME_ZONE_ID 
    ocscheduler  AusNzlJobTrigger DEFAULT   0 0 17 ? * SUN-THU * Australia/Melbourne 
    ocscheduler  UKJobTrigger  DEFAULT   0 0 22 ? * SUN-THU * Europe/London 
    ocscheduler  AmericaJobTrigger DEFAULT   0 0 20 ? * SUN-THU * America/New_York 

,如果任何機構遇到同樣的問題,請大家幫我解決這個問題。 我很難找到根本原因,有時候爲什麼同樣的工作會跑兩次。

+0

爲什麼你有3個觸發器? – Ravi

+0

每個觸發器的處理策略都不相同。 –

+0

嗨Madhusudhan公斤,它已經超過一個月,因爲你發佈了這個問題,我回答了。如果您發現我的答案是有幫助的,那麼您很高興將其標記爲已接受(投票箭頭下的檢查)。謝謝! – walen

回答

0

如果您的工作不允許同時運行(您正在使用@DisallowConcurrentExecution或某種其他機制),並且如果完成時間要比計劃時間段之間的時間間隔(例如,紐約觸發器需要超過5小時)更長,根據您的配置,可能會發生失火,其中一個觸發器可能在同一天觸發兩次:一次針對昨天的錯誤執行,另一次針對今天的計劃執行。

請記住也是:

在墨爾本的時區是17:00 UTC 07:00。
紐約時區的22:00是UTC時間02:00。
倫敦時區的20:00是19:00 UTC。

無論如何,如果您爲觸發器的計劃包含代碼,它會很好。