Quartz
Quartz是 定时任务框架,由Java开发,可以用来执行定时任务
可用于 J2SE 和 J2EE 应用中
相当于增强版的 java.util.Timer
Timer 缺点
由于 Timer 的缺点, JAVA1.5新增 ScheduledExecutorService,处理定时任务
ScheduledExecutorService 缺点
ScheduledExecutorService 不支持复杂的定时,如:每月第三个星期日发一个邮件,这个定时就需要手动实现,比较复杂
Quartz优点
支持复杂的定时任务,如:每月第三个星期日发一个邮件
支持 cron 表达式,可方便实现上面复杂的定时
支持集群模式,如:springboot集群(或分布式、或微服务)环境下,任务 不会重复调度
支持任务信息保存到数据库,重启服务器任务信息不会丢失
应用场景
超时未支付
火车票购票、电商下订单、电商抢购,下单但未支付,系统在 30 分钟后,判断是否支付,未支付就会取消此次订单
统计
月初、月末,年初、年末生成统计单,消费总额、明细、是否欠款
电信订单
支付宝年度统计
定时发短信
贷款、信用卡 还款日前 n 天发短信
概念
任务 Job : 需要执行的任务
触发器 Trigger : 指定Job的执行时间,执行间隔,运行次数等。
调度器 Scheduler : 将 Trigger触发器 和 Job任务 结合起来
相关类
任务 Job : 需要实现
Job接口触发器 Trigger : 自带
SimpleTrigger和CronTrigger,也可以自定义调度器 Scheduler : 自带
StdSchedulerFactory和DirectSchedulerFactory
参考:
https://blog.csdn.net/noaman_wgs/article/details/80984873
https://zhuanlan.zhihu.com/p/522284183
https://cloud.tencent.com/developer/article/1630199

