quartz是Java中很强大的调度工具,它的使用比较简单,但是实际上无论从源码量以及实际生产中的规模化应用看,实际上quartz相当复杂,要想用好实际上也是不容易的。
下图是quartz的整体架构图,基本展示了quartz组件的相关关系。
- JobDetail是具体的任务
- Trigger是触发器,确定什么时候去做什么
- scheduler是调度器,整体上调度trigger和job。
quartz原生代码都是使用Builder模式来定义。
1.quartz maven依赖
quartz似乎更新不是很频繁,官网的最新版本是2.2.3,但是用的比较广泛的是2.2.1。为了演示项目,加入了junit和logback。
|
|
2.定义Job
Job就是任务的定义,比如定义了一个任务是从指定host:port的redis中收集慢查询,其中host:port可以通过定义属性或者通过JobExecutionContext获取JobDataMap来获取。
|
|
3.定义JobDetail
而JobDetail就是具体的任务了,每个任务可以用name和group进行区分(withIdentity)。
|
|
4.定义Trigger
Trigger包含了两种类型SimpleTrigger和CronTrigger(可以通过cron表达式设置,个人认为可以基本代替SimpleTrigger的功能)。
|
|
5.定义Scheduler
|
|
启动
|
|
调度任务
|
|