在研究公司項目的時候,發現定時任務的實現是用Spring集成Quartz框架來做的。于是就開始了新一波的學習……
一、基本概念
官方介紹:
Quartz is arichly featured,open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components that may execute virtually anything you may program them to do. The Quartz Scheduler includes many enterprise-class features, such as support for JTA transactions and clustering.
簡單來說,Quartz是一個完全由Java編寫的開源作業調度框架,為在Java應用程序中進行作業調度提供了簡單卻強大的機制。你可以執行任何你想要執行的任務,比如每天定時給小姐姐或小哥哥發一封想念的郵件。
二、quartz的下載
(1)下載jar包
http://www.quartz-scheduler.org/downloads/ ?官網鏈接 ?請叫我貼心的小姐姐(認真臉)
(2)用maven依賴引入
三、簡單介紹
quart主要有三個核心模塊:Scheduler、Job、Trigger
(1) Job
Job就是你要實現的任務類,需要實現org.quartz.job接口,且只需實現接口定義的execute()方法。
(2) Trigger
Trigger執行任務的觸發器,比如上面所說的你想每天準點給小姐姐或者小哥哥發一封郵件,Trigger將根據你設置的時間執行該任務。Trigger主要包含兩種SimpleTrigger和CronTrigger兩種。
(3) Scheduler
Scheduler為任務的調度器,它會將任務job及觸發器Trigger整合起來,負責基于Trigger設定的時間來執行Job。
四、舉個栗子
1.maven引入依賴
2.創建任務類
public class SendEmailJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
System.out.println("I want to say ……");
}
}
3.主代碼
public class QuartzTest {
public static void main(String args[]) throws Exception {
// 創建任務
JobDetail jobDetail = JobBuilder.newJob(SendEmailJob.class)? ? //要執行的任務
.withIdentity("hello", "hello")? ? ? ? ? //名稱與組名組成Scheduler中任務的唯一標識
.build();
//創建Trigger
SimpleTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("hi", "hi")? ? ? ? //名稱與組名組成Scheduler中Trigger的唯一標識
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()? ? ? //創建SimpleTrigger
.withIntervalInSeconds(10)? ? ? ? ? //每隔十秒運行一次
.repeatForever())? ? ? ? ? ? ? ? ? //重復
.build();
//創建調度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
//調度任務
scheduler.scheduleJob(jobDetail,trigger);
// 開啟調度器
scheduler.start();
Thread.sleep(60000);
//關閉調度器
scheduler.shutdown();
}
}
4.運行結果
I want to say ……
I want to say ……
I want to say ……
I want to say ……
I want to say ……
I want to say ……
I want to say ……
上面的栗子簡單的說明了Quartz的基本使用方式。后續將會繼續研究Quartz的使用,以及Spring集成Quartz的方法。