目录
Quartz
Quartz
简介
Quartz
是 OpenSymphony
开源组织在 Job Scheduling
领域又一个开源项目,是完全由 Java
开发的一个开源任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。 Quartz
是一个开源的作业调度框架,它完全由 Java
写成,并设计用于 J2SE
和 J2EE
应用中,它提供了巨大的灵活性而不牺牲简单性
当定时任务愈加复杂时,使用 Spring
注解 @Schedule
已经不能满足业务需要
在项目开发中,经常需要定时任务来帮助我们来做一些内容,如定时派息、跑批对账、将任务纳入日程或者从日程中取消,开始,停止,暂停日程进度等。SpringBoot
中现在有两种方案可以选择,第一种是 SpringBoot
内置的方式简单注解就可以使用,当然如果需要更复杂的应用场景还是得 Quartz
上场,Quartz
目前是 Java
体系中最完善的定时方案
官方网站:http://quartz-scheduler.org/
Quartz
优点
- 丰富的
Job
操作API
- 支持多种配置
SpringBoot
无缝集成- 支持持久化
- 支持集群
Quartz
还支持开源,是一个功能丰富的开源作业调度库,可以集成到几乎任何Java
应用程序中
核心概念
Scheduler
:Quartz
中的任务调度器,通过Trigger
和JobDetail
可以用来调度、暂停和删除任务。调度器就相当于一个容器,装载着任务和触发器,该类是一个接口,代表一个Quartz
的独立运行容器,Trigger
和JobDetail
可以注册到Scheduler
中,两者在Scheduler
中拥有各自的组及名称,组及名称是Scheduler
查找定位容器中某一对象的依据,Trigger
的组及名称必须唯一,JobDetail
的组和名称也必须唯一(但可以和Trigger
的组和名称相同,因为它们是不同类型的)Trigger
:Quartz
中的触发器,是一个类,描述触发Job
执行的时间触发规则,主要有SimpleTrigger
和CronTrigger
这两个子类。当且仅当需调度一次或者以固定时间间隔周期执行调度,SimpleTrigger
是最适合的选择;而CronTrigger
则可以通过Cron
表达式定义出各种复杂时间规则的调度方案:如工作日周一到周五的15:00 ~ 16:00
执行调度等JobDetail
:Quartz
中需要执行的任务详情,包括了任务的唯一标识和具体要执行的任务,可以通过JobDataMap
往任务中传递数据Job
:Quartz
中具体的任务,包含了执行任务的具体方法。是一个接口,只定义一个方法execute()
方法,在实现接口的execute()
方法中编写所需要定时执行的Job
当然可以这样快速理解:
job
:任务 - 你要做什么事Trigger
:触发器 - 你什么时候去做Scheduler
:任务调度 - 你什么时候需要做什么事
四者其关系如下图所示
Job
为作业的接口,为任务调度的对象;JobDetail
用