demo路径:https://github.com/Jay20160803/spring-boot-quartz.git
quartz 快速开始:
JAR文件:
quartz-XXX.jar
quartz-jobs-xxx.jar
xxx表示版本号,还有其他的日志jar包
属性文件:
quartz.properties 放在应用的classpath下
配置:
Quartz是一个可配置的应用,最好配置方式是在quartz.properties中配置
教程:
初始化Schedule:
scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。注意:scheduler被停止后,除非重新实例化,否则不能重新启动;只有当scheduler启动后,即使处于暂停状态也不行,trigger才会被触发(job才会被执行)
以下的初始化Schedule是通过quartz.properties初始化的
/**
* 创建ScheduleFatory,生成Schedule bean,并启动Schedule
*
* */
@Bean
public Scheduler schedulerFactory(DataSource source, JobFactory jobFactory)throws Exception{
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setOverwriteExistingJobs(true);
factory.setDataSource(source);
factory.setJobFactory(jobFactory);
factory.setQuartzProperties(quartzProperties());
factory.afterPropertiesSet();
Scheduler scheduler = factory.getScheduler();
scheduler.setJobFactory(jobFactory);
scheduler.start();
return scheduler;
}
Quartz API
Scheduler的声明周期从创建它到调用shutdown()方法。一旦创建了Scheduler实例,我们能在实例上添加删除Jobs/Triggers,但是直到scheduler调用start()方法,Trigger和Job才会执行
Scheduler API
Job API : 当某个Job的Trigger执行时,会有一个schedule的线程执行Job的execute方法,JobExecutionContext 包含了Job运行时环境的信息,包括Trigger、JobDetail、Schedule等信息
public interface Job {
public void execute(JobExecutionContext context)
throws JobExecutionException;
}
JobDetail API
JobDetail是客户端创建的(也就是我们的程序),它包含了各种对Job的设置,还有一个JobDataMap
Trigger API
JobBuilder API
TrggerBuider API