我正在使用java的Quartz调度程序。 即使预定的时间已经过去,它也不会抛出调度程序异常,而是立即运行作业。例如,我确认了10月10日的作业,今天是10月30日,如果我保存了信息,它现在自己运行作业< / p>
此外,我正在使用JobListener实现手动触发作业,以便稍后在某个其他作业在同一时间点运行时对其进行计划。
请帮忙。
答案 0 :(得分:2)
此行为在触发器失火指令中配置。默认指令取决于触发类型。您可以在scheduleBuilder中设置misfire指令:
Trigger trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startAt(new Date(2014,10,10))
.withSchedule(withIntervalInMonths(1)
.withMisfireHandlingInstructionDoNothing())
.build();
答案 1 :(得分:0)
完成,只是在安排作业之前添加了时间检查,无论预定时间是否已经过了当前时间
Date startTime = cal.getTime();
//Check if the Scheduled time has passed or not
Calendar currentCal = Calendar.getInstance();
Date currentTime = currentCal.getTime();
if(!(currentTime.compareTo(startTime)>0)){
scheduler.scheduleJob(job,trigger);
}