什么是Quartz?
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。
Quartz可以用来做什么?
Quartz是一个任务调度框架。比如你遇到这样的问题
- 想每月25号,信用卡自动还款
- 想每年4月1日自己给当年暗恋女神发一封匿名贺卡
- 想每隔1小时,备份一下自己工作日志
这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活。
Quartz特点
- 强大的调度功能(作为Spring默认的调度框架,quartz很容易和spring 集成,实现灵活可配置的调度功能,还提供调度运行环境持久化机制可以保持并恢复调度现场,即使因系统故障)
- 灵活的应用方式
- 分布式和集群能力
Quartz的设计模式
- builder模式
- 工厂模式
- 组件模式
- 链式写法
三个核心概念
- 调度器
- 任务
- 触发器
Quartz体系结构
Quartz重要组成
- Job(接口)
- JobDetail
- JobBuilder
- JobStore(接口)
- Trigger
- TriggerBuilder
- ThreadPool
- Scheduler
- Calendar一个Trigger可以和多个Calendar关联,以排除或包含某些时间点
- 监听器(JobListener、TriggerListener 、SchedulerListener)