QuartzScheduler
官方网站:http://www.quartz-scheduler.org Github:https://github.com/quartz-scheduler/quartz
Quatz 是一个特性丰富的,开源的任务调度库,它几乎可以嵌入所有的 Java 程序,从很小的独立应用程序到大型商业系统。Quartz 可以用来创建成百上千的简单的或者复杂的任务,这些任务可以用来执行任何程序可以做的事情。Quartz 拥有很多企业级的特性,包括支持 JTA 事务和集群。
Quartz 是一个老牌的任务调度系统,98 年构思,01 年发布到 sourceforge。现在更新比较慢,因为已经非常成熟了。Quartz 的目的就是让任务调度更加简单,开发人员只需要关注业务即可。他是用 Java 语言编写的(也有.NET 的版本)。Java 代码能做的任何事情,Quartz 都可以调度。
特点:
精确到毫秒级别的调度
可以独立运行,也可以集成到容器中
支持事务(JobStoreCMT )
支持集群
支持持久化
Quartz的基本使用
引入依赖:
编写代码:
Quartz的体系结构
Trigger
触发器是用于触发任务的时间规则,Trigger
类使用TriggerBuilder
构建,Trigger 接口在 Quartz 有 4 个继承的子接口:
子接口
描述
特点
SimpleTrigger
简单触发器
固定时刻或时间间隔,毫秒
CalendarIntervalTrigger
基于日历的触发器
比简单触发器更多时间单位,支持非固定时间的触发,例如一年可能 365/366,一个月可能 28/29/30/31
DailyTimeIntervalTrigger
基于日期的触发器
每天的某个时间
CronTrigger
基于 Cron 表达式的触发器
JobDetail
JobDetail
代表一个具体的任务,他由JobBuilder
构建。JobBuilder
使用关联对象Job
(任务模板)以及JobDataMap
模板参数,具体构建一个任务对象。
Scheduler
调度器由SchedulerFactory
创建,创建出的调度器都是单例的。调度器调度任务需要两个对象:JobDetail
和Trigger
,调度器会在对应的时间点执行任务。
Scheduler中的方法主要分为三大类:
操作调度器本身,例如调度器的启动
start()
、调度器的关闭shutdown()
。操作Trigger,例如
pauseTriggers()
、resumeTrigger()
。操作Job,例如
scheduleJob()
、unscheduleJob()
、rescheduleJob()
Listener
Listener
是用于监听任务生命周期的监听器。他通过观察者模式,监听Scheduler
、Trigger
、JobDeatil
。
通常使用Listener
监听任务的执行状态,然后做出相关的业务操作或者通知。
TriggerListener
getName()
返回监听器的名称
triggerFired()
Trigger 被触发,Job 上的 execute() 方法将要被执行时,Scheduler 就调用这个方法
vetoJobExecution()
在 Trigger 触发后,Job 将要被执行时由 Scheduler 调用这个方法。TriggerListener 给了一个选择去否决 Job 的执行。假如这个方法返回 true,这个 Job 将不会为此次 Trigger 触发而得到执行
triggerMisfired()
Trigger 错过触发时调用
triggerComplete()
Trigger 被触发并且完成了 Job 的执行时,Scheduler 调用这个方法
JobListener
SchedulerListener
JobStore
RAMJobStore
JDBCJobStore
Quartz的配置文件
org.quartz.core
包下,有一个默认的配置文件,quartz.properties
。当我们没有定义一个同名的配置文件的时候,就会使用默认配置文件里面的配置,他的默认配置如下:
如果要修改上述中的配置,可以在resource
下,建立一个同包名,同文件名的配置文件,以覆盖默认的配置。
最后更新于
这有帮助吗?