在測(cè)試暫停和恢復(fù)任務(wù)的時(shí)候發(fā)現(xiàn)暫停一段時(shí)候后恢復(fù)任務(wù)岛宦,Quartz會(huì)把暫停時(shí)候應(yīng)該執(zhí)行的任務(wù)在恢復(fù)的一瞬間全部執(zhí)行。
解決需要兩步:
1耍缴、配置文件中org.quartz.jobStore.misfireThreshold的值必須調(diào)小砾肺,小于任務(wù)調(diào)度的間隔。
2防嗡、使用withMisfireHandlingInstructionDoNothing() 忽略掉調(diào)度暫停過程中沒有執(zhí)行的調(diào)度
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression).withMisfireHandlingInstructionDoNothing();
CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();