Quartz之JDBC

编程入门 行业动态 更新时间:2024-10-15 18:27:17

<a href=https://www.elefans.com/category/jswz/34/1760745.html style=Quartz之JDBC"/>

Quartz之JDBC

一、前言

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

二、Quartz 表结构

可以从官网(/)下载的包中得到建表的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

2、quartz.properties:配置数据源

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

3、任务类

4、调度类

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

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

QRTZ_TRIGGERS:触发器基本信息

QRTZ_FIRED_TRIGGERS:已触发触发器信息

QRTZ_SIMPLE_TRIGGERS:简单触发器

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

QRTZ_JOB_DETAILS:存放jobDetail信息

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

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

这里会在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);

更多推荐

Quartz之JDBC

本文发布于:2023-11-16 10:29:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617805.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Quartz   JDBC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!