SpringBoot整合Quartz

Quartz是一个开源框架。基于定时、定期的策略来执行任务是它的核心功能。

Quartz有三个核心要素:调度器(Schedule)、任务(Job)、触发器(Trigger)。

Job是一个接口,有一个方法void execute(),可以通过实现该接口来定义需要执行的任务;

JobDetail:Quartz每次执行job时,都重新创建一个job实例,会接收一个Job实现类,以便运行的时候通过newInstance()的反射调用机制去实例化Job.JobDetail是用来描述Job实现类以及相关静态信息,比如任务在Schedule中的组名等信息。

Trigger:触发器。描述触发Job执行的时间触发规则,实现类SimpleTrigger和CronTrigger,可以通过cron表达式定义出各种复杂的调度方案。

Calendar:是一些日历特定时间的集合。一个Trigger可以和多个calender关联;

Schedule:调度器。代表一个quartz的独立运行容器。Trigger和JobDetail可以注册到Schedule中。Schedule可以将Trigger绑定到某一JobDetail上,这样当Trigger被触发时,对应的Job就会执行。一个Job可以对应多个Trigger,但一个Trigger只能对应一个Job。

Quartz有自己的专用数据表,下面是Quartz的数据表,在自己的数据库中执行下列sql语句

DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;
-- 存储每一个已配置的Job的详细信息
CREATE TABLE QRTZ_JOB_DETAILS (
SCHED_NAME VARCHAR ( 120 ) NOT NULL,
JOB_NAME VARCHAR ( 200 ) NOT NULL,
JOB_GROUP VARCHAR ( 200 ) NOT NULL,
DESCRIPTION VARCHAR ( 250 ) NULL,
JOB_CLASS_NAME VARCHAR ( 250 ) NOT NULL,
IS_DURABLE VARCHAR ( 1 ) NOT NULL,
IS_NONCONCURRENT VARCHAR ( 1 ) NOT NULL,
IS_UPDATE_DATA VARCHAR ( 1 ) NOT NULL,
REQUESTS_RECOVERY VARCHAR ( 1 ) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY ( SCHED_NAME, JOB_NAME, JOB_GROUP ) 
) ENGINE = INNODB;
-- 存储已配置的Trigger的信息
CREATE TABLE QRTZ_TRIGGERS (
SCHED_NAME VARCHAR ( 120 ) NOT NULL,
TRIGGER_NAME VARCHAR ( 200 ) NOT NULL,
TRIGGER_GROUP VARCHAR ( 200 ) NOT NULL,
JOB_NAME VARCHAR ( 200 ) NOT NULL,
JOB_GROUP VARCHAR ( 200 ) NOT NULL,
DESCRIPTION VARCHAR ( 250 ) NULL,
NEXT_FIRE_TIME BIGINT ( 13 ) NULL,
PREV_FIRE_TIME BIGINT ( 13 ) NULL,
PRIORITY INTEGER NULL,
TRIGGER_STATE VARCHAR ( 16 ) NOT NULL,
TRIGGER_TYPE VARCHAR ( 8 ) NOT NULL,
START_TIME BIGINT ( 13 ) NOT NULL,
END_TIME BIGINT ( 13 ) NULL,
CALENDAR_NAME VARCHAR ( 200 ) NULL,
MISFIRE_INSTR SMALLINT ( 2 ) NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ),
FOREIGN KEY ( SCHED_NAME, JOB_NAME, JOB_GROUP ) REFERENCES QRTZ_JOB_DETAILS ( SCHED_NAME, JOB_NAME, JOB_GROUP ) 
) ENGINE = INNODB;
-- 存储已配置的Simple Trigger的信息
CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
SCHED_NAME VARCHAR ( 120 ) NOT NULL,
TRIGGER_NAME VARCHAR ( 200 ) NOT NULL,
TRIGGER_GROUP VARCHAR ( 200 ) NOT NULL,
REPEAT_COUNT BIGINT ( 7 ) NOT NULL,
REPEAT_INTERVAL BIGINT ( 12 ) NOT NULL,
TIMES_TRIGGERED BIGINT ( 10 ) NOT NULL,
PRIMARY KEY ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ),
FOREIGN KEY ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ) REFERENCES QRTZ_TRIGGERS ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ) 
) ENGINE = INNODB;
-- 存储Cron Trigger,包括Cron表达式和时区信息
CREATE TABLE QRTZ_CRON_TRIGGERS (
SCHED_NAME VARCHAR ( 120 ) NOT NULL,
TRIGGER_NAME VARCHAR ( 200 ) NOT NULL,
TRIGGER_GROUP VARCHAR ( 200 ) NOT NULL,
CRON_EXPRESSION VARCHAR ( 120 ) NOT NULL,
TIME_ZONE_ID VARCHAR ( 80 ),
PRIMARY KEY ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ),
FOREIGN KEY ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ) REFERENCES QRTZ_TRIGGERS ( SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP ) 
) ENGINE = INNODB;
CREATE TABLE QRTZ_SIMPROP_T

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

one_smail

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值