SpringBoot集成quartz实现动态定时任务
(1)Quartz简介
Quartz三大组件:
一、调度器scheduler
二、任务job
三、触发器trigger
1、job:job是一个接口,通过实现job接口,可实现需要定时执行的代码逻辑。
2、JobDetail:JobDetail主要是用来描述job的相关信息,比如任务在scheduler中的组名等信息,job的子类。
2、trigger:可以通过cron表达式设置定时任务的触发时间。
3、scheduler:JobDetail和tigger需要注册到scheduler里,这样trigger才能触发job。
Quartz的执行流程:
在使用quartz时在数据库需要创建11张表(会在下面贴出),Quartz中会开一个QuartzSchedulerThread线程扫描表中快要执行job然后执行。
(2)springboot集成quartz
1、引入quartz依赖
2、配置类设置
3、实现job接口
4、创建一个api接口
5、测试定时任务
(3)sql脚本
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE mydatabase
.qrtz_blob_triggers
(
sched_name
varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘调度名称’,
trigger_name
varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘qrtz_triggers表trigger_name的外键’,
trigger_group
varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘qrtz_triggers表trigger_group的外键’,
blob_data
blob NULL COMMENT ‘存放持久化Trigger对象’,
PRIMARY KEY (sched_name
, trigger_name
, trigger_group
) USING BTREE,
CONSTRAINT qrtz_blob_triggers_ibfk_1
FOREIGN KEY (sched_name
, trigger_name
, trigger_group
) REFERENCES mydatabase
.qrtz_triggers
(sched_name
, trigger_name
, trigger_group
) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT =