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>
使用步驟:
- 實(shí)現(xiàn)job接口創(chuàng)建工作類(lèi)
- 通過(guò)工廠類(lèi)創(chuàng)建調(diào)度程序?qū)嵗?/li>
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
- 使用JobBuilder通過(guò)工作類(lèi)創(chuàng)建工作實(shí)例??梢栽O(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為工作實(shí)例創(chuàng)建觸發(fā)器,并設(shè)置觸發(fā)條件。
note:
比較常用的的有SimpleTrigger和CronTrigger(cron表達(dá)式)
Trigger incrTrigger = newTrigger()
.withIdentity("incrTrigger", "crawlGroup")
.withSchedule(cronSchedule("0 35 7-22/5 * * ?")) // 每天8點(diǎn)到22點(diǎn)每隔5小時(shí)觸發(fā)
.forJob("incrCrawlJob", "crawlGroup")
.build();
- 通調(diào)度程序注冊(cè)job實(shí)例和觸發(fā)器
scheduler.scheduleJob(incrlJobDetail, incrTrigger);
- 啟動(dòng)調(diào)度程序
scheduler.start();
備注:
- 一個(gè)觸發(fā)器只能綁定一個(gè)JobDetail
- 調(diào)度程序可以注冊(cè)多個(gè)JobDetail和觸發(fā)器
- cron表達(dá)式可以在時(shí)間段范圍的基礎(chǔ)上設(shè)置間隔多長(zhǎng)時(shí)間執(zhí)行
example:
7-22/5(7點(diǎn)到22點(diǎn),每隔5個(gè)小時(shí)執(zhí)行一次) - JobDetail和觸發(fā)器不綁定到調(diào)度程序上就不會(huì)執(zhí)行
- 不要忘記啟動(dòng)調(diào)度程序