10、使用调度框架quartz,为12306系统增加定时调度功能
10-1 本章介绍 (04:51)

10-2 项目中增加batch定时调度模块 (07:00)
参照9.4节
创建后端模块的步骤:
创建maven模块
修改pom.xml,增加springboot相关依赖
增加启动类
增加测试接口
增加配置:端口、日志等,修改日志文件输出路径
修改gateway,增加新模块路由
10-3 为batch模块配置持久层生成器 (08:16)
提交git时,可以勾选【Amend Commit】,将本次提交和上一次提交合并,注意:上一次提交要是未push
10-4 演示Springboot自带的定时任务 (08:51)
在线Cron表达式生成器:https://www.matools.com/cron/
定时任务三大要素:
1. 执行的内容:功能逻辑
2. 执行的策略:cron表达式
3. 开关:开启定时任务
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year (2)Seconds Minutes Hours DayofMonth Month DayofWeek
cron从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
10-5 定时调度模块集成quartz (08:39)
10-6 关于调度任务的并发执行 (03:36)
并发执行:上一周期还没执行完,下一周期又开始了
使用@DisallowConcurrentExecution禁用并发执行
10-7 使用数据库配置quartz调度任务 (15:14)
1. 让数据库存储定时任务信息
2. 通过接口来操作定时任务:新增、暂停、重启、重置、删除、查询
本节JAVA代码修改完后,必须先执行sql脚本,才能启动代码
10-8 通过控台界面操作定时任务 (18:19)
定时任务一般由程序员来维护,虽然我们直接调接口也能用,但是还是优先做成页面,更容易维护。
router直接多级路由,使用children可以定义子路由,children下的子路由还可以再定义children
10-9 增加任务手工补偿功能 (04:08)
跑批功能需要考虑补偿,有几种情况需要补偿:
任务执行失败,要重新执行
由于系统问题,任务没有触发
紧急问题处理,需要再执行一次
quartz自带触发一次的功能,且是异步的。
10-10 演示多节点场景中quartz的调度情况 (07:42)
在启动应用时,通过加-Dserver.port=18003,可以覆盖application.properties里的配置
quartz在多节点的场景中,是轮询执行定时任务(从现象看,单任务时是类似IP粘连的效果)
请自己观察:在多节点的情况下,SpringBoot自带的定时任务是怎么执行的?