定時任務(wù)的暫停、關(guān)閉等操作說明
基于quartz3.0版本總結(jié)一些quartz定時任務(wù)的暫停、恢復(fù)、刪除等操作。
定時任務(wù)的刪除等操作主要是基于JobKey或TriggerKey。
暫停Job:
//通過JobName以及JobGroup獲得JobKey
JobKey jobKey = JobKey.jobKey("aaaa" + 1, JOB_GROUP_NAME);
try {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler .pauseJob(jobKey);
} catch (SchedulerException e) {
e.printStackTrace();
}
注:此處暫停job會根據(jù)jobkey暫停job及對應(yīng)的trigger
恢復(fù)Job:
//通過JobName以及JobGroup獲得JobKey
JobKey jobKey = JobKey.jobKey("aaaa" + 1, JOB_GROUP_NAME);
try {
schedulerFactoryBean.getScheduler().resumeJob(jobKey);
} catch (SchedulerException e) {
e.printStackTrace();
}
刪除job
方法一:
//通過JobName以及JobGroup獲得JobKey
JobKey jobKey = JobKey.jobKey("aaaa" + 1, JOB_GROUP_NAME);
try {
schedulerFactoryBean.getScheduler().deleteJob(jobKey);
} catch (SchedulerException e) {
e.printStackTrace();
}
方法二:
//通過triggerName獲取TriggerKey
TriggerKey aaatrigger = TriggerKey.triggerKey("aaatrigger");
try {
schedulerFactoryBean.getScheduler().unscheduleJob(aaatrigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
注:此處刪除job會根據(jù)jobkey或TriggerKey刪除job及對應(yīng)的trigger
另外會存在一種情況,再暫停一段時間后,恢復(fù)定時會將暫停期間未執(zhí)行的定時執(zhí)行一遍,這個和創(chuàng)建定時的時候Trigger的CronTrigger.MISFIRE_INSTRUCTION_DO_NOTHING屬性有關(guān)系,如果設(shè)置的是misfire的定時立刻執(zhí)行的話就會在恢復(fù)定時的時候馬上執(zhí)行,如果是放棄執(zhí)行的話就會在恢復(fù)定時的時候執(zhí)行下一個時間的定時。