Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。 Quartz可以用来创建简单或复杂的计划来执行几十,几百甚至几十万个作业; 作业的任务被定义为标准的Java组件,可以执行几乎任何你可以编程他们做的事情。 Quartz Scheduler包括许多企业级功能,例如支持JTA事务和集群。
一.Quartz下载
可以通过官网去下载jar,也可以通过maven。
pom.xml 配置:
1 2 3 4 5 6 7 8 9 10 11
| <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>
|
二.Quartz Job
Job 真正需要执行的实体
HelloJob.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package com.devnp.job;
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;
public class HelloJob implements Job{
public void sayHello(){ System.out.println("Hello World."); }
public void execute(JobExecutionContext context) throws JobExecutionException { sayHello(); } }
|
三.Quartz 触发器(Trigger)
JobDetail : 设置job
Trigger : 定义的job需要设置触发器,这样Quartz这样可以通过触发器来执行方法。同时触发器可以配置什么时候出发,多久执行一次等。
1 2 3 4 5 6 7 8 9
| JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build();
Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build();
|
四.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package com.devnp;
import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory;
import com.devnp.job.HelloJob;
public class QuartzDemo1 { public static void main(String[] args) {
try { JobDetail job = JobBuilder.newJob(HelloJob.class) .withIdentity("dummyJobName", "group1").build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build(); Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger);
} catch (SchedulerException se) { se.printStackTrace(); } } }
|
五.代码下载
QuartzDemo.zip
Author:
Darren Du
License:
Copyright (c) 2019 MIT LICENSE