本文共 2355 字,大约阅读时间需要 7 分钟。
Quartz是一个由Java编写的开源作业调度框架,主要用于在分布式环境中定义和管理多种任务执行计划。其核心功能包括任务调度、时间触发、任务恢复等,适用于需求如自动化任务执行、定时事件处理等场景。
Quartz的主要API包括Job、Trigger、Scheduler等,以下是其常用组件的介绍:
Job接口用于定义需要执行的任务逻辑,开发者需实现该接口来创建定时任务。例如,发送邮件、重启机器、发送优惠券提醒等都可以通过实现Job接口来实现。
Trigger用于指定任务的执行时间规则,常见的触发器类型包括SimpleTrigger和CronTrigger。SimpleTrigger适用于固定间隔或一次性触发,CronTrigger则基于Cron表达式实现更复杂的时间规则。
Scheduler作为Quartz的核心运行容器,负责管理Trigger和Job的关系,确保任务按规则执行。一个Scheduler可以管理多个Trigger和Job,且任务名称和组名需唯一。
SimpleTrigger适用于固定间隔或一次性触发任务。开发者可通过设置startNow、startAt、endAt等属性来配置触发规则。
CronTrigger基于Cron表达式,支持更复杂的时间规则。通过配置Cron表达式,可以精确控制任务执行时间。
Cron表达式由7个子表达式组成,分别表示秒、分钟、小时、日、月、周、年。特殊字符如L、W、#等用于扩展时间控制。
以下是一些常见的Cron表达式示例:
0 0 12 * * ?:每天12点运行0 15 10 ? * *:每天10:15运行0 15 10 15 * ?:每月15日10:15运行0 15 10 L * ?:每月最后一天10:15运行在Spring项目中整合Quartz需添加相关依赖,推荐使用如下配置:
org.springframework spring-context-support 4.3.26.RELEASE org.springframework spring-tx 4.3.26.RELEASE org.quartz-scheduler quartz 2.3.0
通过Spring配置文件定义任务和触发器:
Quartz默认使用quartz.properties配置文件,主要配置包括:
建议在项目中添加或覆盖默认配置文件以定制调度参数。
由于Quartz生成的Job实例不受Spring管理,直接注入会出现问题。解决方案如下:
public class CustomerJobFactory extends SpringBeanJobFactory { @Autowired private AutowireCapableBeanFactory capableBeanFactory; @Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { Object jobInstance = super.createJobInstance(bundle); capableBeanFactory.autowireBean(jobInstance); return jobInstance; }} 通过以上方法,Quartz任务可以正常与Spring的IOC容器进行交互和管理。
转载地址:http://bkxfk.baihongyu.com/