quartz是一個分佈式任務調度框架。最初是由OpenSymphony(大概2010年網站已關閉)開發,現已被Terracotta於2009年收購,目前一直在持續更新中。(最新的版本是2.3.x,於2017年4月份發佈,最新的master分支最後提交時間是2017年10月)
quartz使用非常簡單,使用調度器(schedule)調度特定的job和trigger即可。
quartz有內存模式和數據庫模式,默認是內存模式。如果使用數據庫模式需要配置quartz.properties,關於配置信息參考官方文檔。quartz.properties使用時只需要放置在類加載路徑下。
使用方式如下:
引入jar包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
使用Demo
啓動調度任務(一般是數據庫模式,直接運行數據庫中已經存在的調度任務)
public static void main(String[] args) throws SchedulerException { SchedulerFactory sf = new StdSchedulerFactory(); Scheduler scheduler = sf.getScheduler(); scheduler.start(); }
創建調度任務並運行
public static void main(String[] args) throws SchedulerException {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
//job
JobDetail jb = JobBuilder.newJob(RamJob.class).withDescription("description:ram job")
.withIdentity("ramJob", "ramGroup").build();
//trigger
Trigger trigger = TriggerBuilder.newTrigger().withDescription("ram trigger")
.withIdentity("ramTrigger", "ramTriggerGroup").startAt(new Date(System.currentTimeMillis() + 3 * 1000))
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
scheduler.scheduleJob(jb, trigger);
scheduler.start();
}