Quartz是一个开源的作业调度框架,可以让计划的任务在一个预先设计好的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数,支持集群。
1、核心类简介
调度器:Scheduler
quartz的核心大脑,调度中心,包含两个重要的组件:JobStore、ThreadPool
JobStore:存储器,用来存储运行时的信息,包括Trigger、JobDetail、Schduler、业务锁等,有以下几种实现:
- RAMJob(内存实现)
- JobStoreTX(JDBC实现,事务由quartz管理)
- JobStoreCMT(JDBC实现,事务由容器管理)
- ClusteredJobStore(集群实现)
- TerracottaJobStore(什么是Terractta)
任务:JobDetail & Job
JobDetail是任务的定义,而Job是任务的执行逻辑。在JobDetail里会引用一个Job Class定义,还有一个JobDetailMap存储结构。
Job是具体的任务执行逻辑,JobDetailMap是同一个JobDetail实例化的Job共享的存储器。
触发器:Trigger
定义Job何时执行,理解为定时触发,有以下几种实现:
- SimpleTrigger:指定从某一个时间开始,以一定的时间间隔(单位是毫秒)执行的任务。
- CalendarIntervalTrigger:类似于SimpleTrigger,指定从某一个时间开始,以一定的时间间隔执行的任务。 但是不同的是SimpleTrigger指定的时间间隔为毫秒,没办法指定每隔一个月执行一次(每月的时间间隔不是固定值),而CalendarIntervalTrigger支持的间隔单位有秒,分钟,小时,天,月,年,星期。
- DailyTimeIntervalTrigger:指定每天的某个时间段内,以一定的时间间隔执行任务。并且它可以支持指定星期。
- CronTrigger:适合于更复杂的任务,它支持类型于Linux Cron的语法(并且更强大)。基本上它覆盖了以上三个Trigger的绝大部分能力(但不是全部)—— 当然,也更难理解。
2、RAMJob方式的简单应用
1 | package com.topvision.quartz; |
1 | package com.topvision.quartz; |