开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情
分布式定时任务调度框架Quartz
介绍
Quartz是一款定时任务调度框架,它是由Java编写,支持集群、各种数据库、插件、cron-like表达式等,是Spring默认的任务调度框架,在初始化时会在连接的关系型数据库中创建11张表,表名都是以QRTZ_开头,用于数据的持久化,我们可以自定义表前缀、任务的线程池数量、是否集群配置等。
核心
Quartz是一款轻量级的任务调度框架,定义任务(Job)、触发器(Trigger)、调度器(Scheduler)就可以实现定时任务调度功能。
任务(Job)
任务Job是我们需要执行具体任务的实现类,我们需要实现Job接口,实现里面的execute()方法,具体的实现任务的代码就写在execute()方法中。
触发器(Trigger)
Quartz触发器有很多种,例如SimpleTrigger、CronTrigger等。SimpleTrigger触发器就是简单的以一定的时间间隔执行任务,我们设置起始时间、截止时间、时间间隔、执行次数等即可。CronTrigger触发器是使用Cron表达式进行执行。
Cron表达式
cron表达式是每一个域都使用数字,包含一些特殊字符,实现任务的定时执行。
例如:0 0 12 * * ?代表的是每天中午12点触发
分别代表的是秒、分、时、日、月、星期几[年],年是可选,一般都会省略。
秒 0~59
分钟 0~59
小时 0~23
日期 1~31
月份 1~12
星期 1~7 1代表是周日
调度器(Scheduler)
调度器是将任务job和指定执行触发周期的触发器Trigger关联起来,操作时通过调度器进行启动、暂停、恢复等。
小结
Quartz有很多优点,支持多线程,简单易用,数据可以存储在关系型数据库中,并且可以指定触发时间,使用方便,类似的分布式框架还有xxl-job,小伙伴们可以学习一下,进行对比。