我的应用程序每天触发三次,有时同一个调度程序在立即完成作业后运行两次。这种行为不一致。
Quartz配置详情:
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 :(得分:0)
如果不允许您的作业同时运行(您正在使用@DisallowConcurrentExecution
或其他某种机制),并且完成时间比计划时间之间的时间间隔长(例如纽约触发时间超过5)小时),可能会发生熄火,根据您的配置,您的一个触发器可能在同一天触发两次:一次是昨天的失误执行,另一次是今天的预定执行。
还要记住:
墨尔本时区的17:00是07:00 UTC 22:00在纽约时区是02:00 UTC 伦敦时区的20:00是19:00 UTC。
无论如何,如果您为触发器的日程安排包含了代码,那就太好了。