quartz.properties配置文件中的属性:激活失败临界,org.quartz.jobStore.misfireThreshold(单位毫秒)默认为60秒。 如果我们在创建trigger实例时指定启动时间在60秒内,那么就会出现首次执行定时任务时出现重复执行的问题。
// 3、构建Trigger实例
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("export_trigger", "export_trigger_group")
.forJob("export_job","export_group") //Trigger找到对应的名称为export_job、组为export_group的Job,如果不存在则会在执行scheduler.scheduleJob(jobDetail,trigger);报错
.startAt(DateBuilder.futureDate(90, IntervalUnit.SECOND))//90秒后生效,不能<=60秒,要不然项目启动后,首次执行2遍job
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(100)//每隔60秒执行一次
.repeatForever()//永远重复执行
).build();