Quartz是强大的开源任务调度框架,纯Java实现,精细控制排程
特点
强大的调度功能
(作为Spring默认的调度框架,Quartz很容易和Spring集成,实现灵活可配置的调度功能,它提供了调度运行坏境可持久化功能,可保存并恢复调度现场,即使因系统故障关闭,任务调度现场数据并不会丢失,而Timer做不到这点,Timer一旦执行失败就不能继续执行,并且它的一切执行信息都会丢失)
灵活的应用的方式
(允许程序员灵活定义触发器的调度时间表,并可以对触发器和任务进行关联映射,quartz提供了主键式的监听器,各种插件,线程池等功能,支持任务和调度多种组合方式,支持调度数据的多种存储方式)
分布式和集群能力
Quartz的设计模式
主要用到的设计模式
Builder模式(job,triggle组件都是通过Builder创建)
Factory模式(调度器是通过Factory模式创建)
组件模式(让Quartz的每个组件可插拔,并且组件之前耦合度较低,易于扩展)
链式写法
Quartz体系结构
三个核心概念
调度器(负责定期定时定频率的执行任务)
任务(包括业务逻辑)
触发器(让东西生效的时间,抽象出便于解耦)
1.JobDetail(包含任务的实现类以及类的信息)
2.trigger (决定任务什么时候被调用)
(1)SimpleTrigger(能够执行类似Timer时间上面的操作,比如定频率的执行某个case)
(2)CronTrigger(能实现更 复杂的业务逻辑,比如我们需要任务是每周执行一次)
3.Scheduler(它能够定时定频率的执行JobDetail的信息,通过它把JobDetail和trigger绑定在一起
重要组成
Job接口(只有一个方法)实现接口,定义运行任务,有参数,调度上下文各种信息
JobDetail(Quartz在每次执行Job时都创建一个Job实例,所以它不直接接收一个Job实例,相反它接收一个Job实现类,以便运行时通过newInstance反射机制实例化Job,因此需要一个类来描述Job的实现类及其他相关静态信息)
JobBuilder(创建Job实例JobDetail)
JobStore(是一个接口)
Trigger
TriggerBuiler
ThreadPool
Scheduler
Calendar(一个Trigger可以和多个Calendar关联,以排除或包含某些时间点)
监听器JobListener,TriggerListener,SchedulerListener