1. 什么是Quartz 框架
Quartz是一个开源的任务调度框架,它完全由java写成。你能用它来执行一个任务来创建简单或复杂的调度。
简单来说就是实现“计划(或定时)任务”的系统,例如:订单下单后未付款,15分钟后自动撤消订单,并自动解锁锁定的商品。
官网:http://www.quartz-scheduler.org
参考:https://github.com/dufyun/quartz-core-learning
2.配置文件 applicationContext_job.xml各个属性作用
(1)Job:表示一个任务(工作),要执行的具体内容。
(2)JobDetail:表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要 执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
(3)Trigger:代表一个调度参数的配置,什么时候去调。
(4)Scheduler:代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与JobDetail组合,就可以被Scheduler容器调度了。
3.Quartz可以用来做什么?
Quartz是一个任务调度框架。比如你遇到这样的问题:
想每月10号自动提示信息卡还款金额;每月28号,信用卡自动还款。
订单下单后未付款,15分钟后自动撤消订单,并自动解锁锁定的商品。
想每年4月1日自己给当年暗恋女神发一封匿名贺卡。
想每隔1小时,备份一下自己的爱情动作片、学习笔记到云盘。
医院系统11点才能开放挂号。
企业中如每天凌晨2点触发数据同步、发送Email等操作。
== 在某一个有规律的时间点干某件事==
4. Cron表达式详解
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义。
域:
Seconds(秒):可出现", - * /"四个字符,有效范围为0-59的整数。
Minutes(分钟):可出现", - * /"四个字符,有效范围为0-59的整数 。
Hours(小时):可出现", - * /"四个字符,有效范围为0-23的整数 。
DayofMonth(日of 月):可出现", - * / ? L W C"八个字符,有效范围为0-31的整数。
Month(月):可出现", - * /"四个字符,有效范围为1-12的整数。
DayofWeek(日of 星期):可出现", - * / ? L C #"四个字符,有效范围为1-7的整数1表示星期天,2表示星期一, 依次类推。
Year(年):可出现", - * /"四个字符,有效范围为1970-2099年。
4. 如何监控 Quartz 的 job 执行状态:运行中,暂停中,等待中?
通过往表(新建一个操作日志表)里插入日志的形式:
1)运行中:通过 JobListener 监听器来实现运行时更改表信息。
2)暂停中:调用 scheduler.pauseTrigger()方法时,更改表中 job 信息。
3)等待中:新添加的 job 默认给其等待中的状态,也是更改表中的 job 信息 但是上面这种形式的麻烦之处是得频繁的往表里插入数据。