note:
maven添加quartz依賴
<!--quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>
使用步驟:
- 實現(xiàn)job接口創(chuàng)建工作類
- 通過工廠類創(chuàng)建調(diào)度程序?qū)嵗?/li>
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
- 使用JobBuilder通過工作類創(chuàng)建工作實例蚀狰∽幸可以設(shè)置jobKey和group,傳遞數(shù)據(jù)
// define the job and tie it to our DumbJob class
JobDetail job = newJob(DumbJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.141f)
.build();
- 使用TriggerBuilder為工作實例創(chuàng)建觸發(fā)器捌归,并設(shè)置觸發(fā)條件毁嗦。
note:
比較常用的的有SimpleTrigger和CronTrigger(cron表達式)
Trigger incrTrigger = newTrigger()
.withIdentity("incrTrigger", "crawlGroup")
.withSchedule(cronSchedule("0 35 7-22/5 * * ?")) // 每天8點到22點每隔5小時觸發(fā)
.forJob("incrCrawlJob", "crawlGroup")
.build();
- 通調(diào)度程序注冊job實例和觸發(fā)器
scheduler.scheduleJob(incrlJobDetail, incrTrigger);
- 啟動調(diào)度程序
scheduler.start();
備注:
- 一個觸發(fā)器只能綁定一個JobDetail
- 調(diào)度程序可以注冊多個JobDetail和觸發(fā)器
- cron表達式可以在時間段范圍的基礎(chǔ)上設(shè)置間隔多長時間執(zhí)行
example:
7-22/5(7點到22點瓜挽,每隔5個小時執(zhí)行一次) - JobDetail和觸發(fā)器不綁定到調(diào)度程序上就不會執(zhí)行
- 不要忘記啟動調(diào)度程序