优点: 可以与 Spring 集成,并且支持动态添加任务和集群。
缺点 :分布式支持不友好,没有内置 UI 管理控制台、使用麻烦(相比于其他同类型框架来说)
三个组件
Schedule调度器
Trigger触发器
Job任务
模式
单机模式
Job继成QuartzJobBean,实现 #executeInternal
ScheduleConfiguration
配置JobDetail
配置Trigger
集群模式
在生产环境下,一定一定一定要使用 Quartz 的集群模式,保证定时任务的高可用
@DisallowConcurrentExecution 注解
使用 Quartz 的 JDBC 存储器 JobStoreTX ,使用 MySQL 作为数据库
yml的quartz相关配置
初始化 Quartz 表结构
创建 quartz 数据源
定时任务配置
Bean 自动设置
Scheduler 手动设置(推荐使用)
是当当网开源的一个基于Quartz和ZooKeeper的分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成,一般我们只要使用 Elastic-Job-Lite 就好。
优劣
于 2015 年开源,是一款优秀的轻量级分布式任务调度框架,支持任务可视化管理、弹性扩容缩容、任务失败重试和告警、任务分片等功能,基于数据库
优劣
Spring与Quartz的Cron表达式貌似有区别,在Spring中如下:
1.cron在Spring中表达式是6位组成,不允许第七位的年份
2.在周几的的位置,1-7代表周一到周日
定时任务不该阻塞。默认是阻塞的
1)可以让业务以异步的方式,自己提交到线程池:
CompletableFuture.runAsync(() -> {
},execute);
2)支持定时任务线程池;设置类TaskSchedulingProperties
spring.task.scheduling.pool.size: 5(不同版本可能会失效)
3)让定时任务异步执行异步任务
总结:使用异步任务 + 定时任务来完成定时任务不阻塞的功能
建议:重温商城视屏里面的介绍