特点
是一个很强大的开源调度框架,有如下特点:
- 强大的调度功能,比如支持丰富的调度方法,可满足各种常规和特殊的需求
- 灵活的应用方式,如自持任务和调度的多种组合方式,支持调度数据的多种存储方式
- 分布式和集群能力
- 是Spring的默认调度框架,可和Spring集成实现灵活可配置的调度功能
quartz调度核心元素:
- Scheduler:任务调度器,是实际执行任务调度的控制器,在Spring中通过ScheduleFactoryBean封装起来
- Trigger:触发器,用于定义任务调度的时间规则,有Simple Trigger,Cron Trigger,DateIntervalTrigger和NthIncludedDayTrigger,其中CronTrigger用的比较多,本文主要介绍这种方式。CronTrigger在spring中封装在CronTriggerFactoryBean中。
- Calendar:是一些日历特点时间点的集合,一个Trigger可包含多个Calendar,以便排除或包含某些时间点
- JobDetail:用来描述Job实现类及其他相关的静态信息,如Job名字、关联监听器等信息。在Spring中有JobDetailFactoryBean和MethodInvokingJobDetailFactoryBean两种实现,如果任务调度只需要执行某个类的某个方法,就可以通过MethodInvokingJobDetailFactoryBean来调用。
- Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在JobDataMap实例中。实现Job接口的任务,默认是无状态的,若要将Job设置成有状态的,在quartz中是给实现的Job添加@DisallowConcurrentExecution注解(以前是实现StatefulJob接口,现在已被Deprecated),在与spring结合中可以在spring配置文件的job detail中配置concurrent参数。