Quartz之JDBC-JobStoreTX配置

一、前言

上篇 《Quartz介绍》中使用的是RAMJobStored存储调度信息,当进程终止调度信息会丢失,本篇我们介绍使用JDBCJobStore来存储调度信息(jobs、Triggers和日历)。

二、Quartz 表结构

可以从官网(http://www.quartz-scheduler.org/)下载的包中得到建表的SQL。

路径如下:

/src/org/quartz/impl/jdbcjobstore/tables_mysql.sql

QRTZ_CRON_TRIGGERS:存储cron类型的触发器。

QRTZ_FIRED_TRIGGERS:存放已触发的触发器

QRTZ_JOB_DETAILS:存放jobDetail信息

QRTZ_SIMPLE_TRIGGERS:简单触发器信息

QRTZ_TRIGGERS:触发器基本信息

---------------------------------------------------

QRTZ_BLOB_TRIGGERS:以BLOB类型存储的触发器。

QRTZ_CALENDARS: 存放日历信息。

QRTZ_LOCKS:存储程序销的信息

QRTZ_PAUSED_TRIGGER_GRPS:存放暂停掉的触发器

QRTZ_SCHEDULER_STATE:调度器状态

QRTZ_SIMPROP_TRIGGERS:用于存储CalendarIntervalTrigger和DailyTimeIntervalTrigger。

三、任务持久化配置例子

1、导入依赖:增加mysql

Quartz之JDBC-JobStoreTX配置_第1张图片

2、quartz.properties:配置数据源

Quartz之JDBC-JobStoreTX配置_第2张图片

注:这里jobstore换成org.quartz.impl.jdbcjobstore.JobStoreTX然后配置数据连接,也可以配置连接池。

3、任务类

Quartz之JDBC-JobStoreTX配置_第3张图片

4、调度类

Quartz之JDBC-JobStoreTX配置_第4张图片

注:这里使用的是SimpleScheduleBuilder,创建一个简单的任务调度器

5、运行后查看表中的数据

QRTZ_TRIGGERS:触发器基本信息

Quartz之JDBC-JobStoreTX配置_第5张图片

QRTZ_FIRED_TRIGGERS:已触发触发器信息

Quartz之JDBC-JobStoreTX配置_第6张图片

QRTZ_SIMPLE_TRIGGERS:简单触发器Quartz之JDBC-JobStoreTX配置_第7张图片

Quartz之JDBC-JobStoreTX配置_第8张图片

注:这里存储了触发器重复次数,重复间隔以及已经触发了几次的信息。

QRTZ_JOB_DETAILS:存放jobDetail信息

Quartz之JDBC-JobStoreTX配置_第9张图片

注:任务Class的路径以及任务数据。

如果换成触发器换成表达式

Quartz之JDBC-JobStoreTX配置_第10张图片

这里会在QRTZ_CRON_TRIGGERS表中生成数据。

QRTZ_CRON_TRIGGERS:CronScheduleBuilder触发器信息

四、可视化界面开发

一个项目中定时任务比较多,如果没有可视化界面维护会比较困难,那用了Quartz如何给它做个可视化界面呢。

创建任务

就是调用上面调度类创建任务,任务名称、触发器名称、触发器表达式。scheduler.scheduleJob(jobDetail,trigger);  这样就会把触发器保存在数据库中。

注:一个触发器可以有多个任务,但一般场景下一个触发器一个任务也能满足需求,一个任务多个触发器应该是不可以的。

修改任务

调用Schedule.rescheduleJob接口完成更改,修改后需要重启应用。

禁用任务

JobKey jobKey = JobKey.jobKey(jobName, jobGroup);

getScheduler().deleteJob(jobKey);

立即运行

getScheduler().triggerJob(jobKey);

你可能感兴趣的:(Java技术,java)