Quartz是一个完全由java编写的开源作业调度框架

流程实现

  1. // 1.自定义任务调度类实现job接口
  2. // 2.提供Job信息->JobBuilder->JobDetail实现类
  3. // 3.提供Trigger信息->TriggerBuilder->Trigger实现类
  4. // 4.调度器schuduleJob(jobDetail,trigger);

基础接口

Quartz - 图1

Job : 作业调度类,业务逻辑存放处

JobDetail : 说明Job属性,通过JobBuilder产生,供调度器使用

Trigger : 触发器,设置触发参数

Scheduler : 调度器,利用JobDetail和Trigger实现任务调度

Job

Job是Quartz的作业接口,只有一个execute执行方法

类实现Job接口,重写execute方法,即可实现作业调度环节

  1. public class JobImpl implements Job{
  2. @Override
  3. public void execute(JobExecutionContext context) throws JobEecutionException {
  4. // TODO
  5. }
  6. }

JobDetail

quartz_jobDetail.png

  1. // jobDetail接口 用于获取job信息
  2. // jobKey : [group job组别][name job名称]
  3. // jobDataMap : job数据信息
  4. // jobClass : job实现类

Trigger

quartz_trigger.png

  1. // trigger接口 用于设置获取触发器信息
  2. // startTime : 首次触发时间
  3. // endTime : 结束触发时间

Scheduler

  1. // 触发器接口 绑定trigger和jobDetail
  2. // start() 启动
  3. // standby() 挂起
  4. // shutdown() 关闭

工厂类

JobBuilder

quartz_jobBuilder.png

  1. // JobBuilder:JobDetail的工厂类
  2. // key : jobkey [group,name]
  3. // description : job描述
  4. // jobClass : job类

quartz_jobBuilder2.png

  1. // newJob(Class< ? extend Job>) 设置 jobClass
  2. // build 生产jobDetail
  3. // withIdentity() 设置jobKey
  4. // usingJobData 设置jobDataMap
  1. // 演示
  2. JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobKey).usingJobData(jobDataMap).build();

TriggerBudiler

quartz_triggerBuilder.png

  1. // TriggerBuilder:Trigger的工厂类
  2. // key : Trigger [group,name]
  3. // calendarName : 日历名称
  4. // description : trigger描述
  5. // startTime : 首次触发时间
  6. // endTime : 结束触发时间
  7. // priority : 优先级

quartz_triggerBuilder2.png

  1. // T build 生产trigger
  2. // withIdentity() 设置trigger
  3. // modifiedByCalendar() 改日历名称
  4. // forJob() 设置jobKey
  5. // usingJobData 设置jobDataMap

SchedulerFactory