利用spring+quartz-scheduler+MySql实现定时任务动态调整

Posted hongshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用spring+quartz-scheduler+MySql实现定时任务动态调整相关的知识,希望对你有一定的参考价值。

一、需求

       由于可能要动态调整某些定时任务的执行,然而目前WEB方面的现状是所有定时任务是利用spring @Scheduled注解方式实现,不方便动态在调整定时任务的执行时间

 

 

二、分析

        在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类。因此第二种方式远比第一种方式来的灵活。所以这个分析设计也是基于spring配置的方式

       Quartz中是以分组名+任务名作为任务的唯一key,为与quartz中的实现方式一致,本设计也采用这样的方式


注:spring @Scheduled注解方式,定时任务的执行Job在内存,不方便动态调整,并且不支持比如最后一个工作0 0 17 ? * MON-FRI  0 0 15 LW * ?等诸如此类的cron表达式,功能相对quartz比较弱些

三、实现

3.1 数据表的设计

直接上表吧

CREATE   TABLE   `schedule_job` (    `job_id`  varchar (45)  NOT   NULL   DEFAULT   ''   COMMENT  '任务id,用于区分业务' ,    `job_name`  varchar (64)  NOT   NULL   DEFAULT   ''   COMMENT  '任务名称' ,    `job_group`  varchar (64)  NOT   NULL   DEFAULT   'DEFAULT'   COMMENT  '任务分组' ,    `job_status`  varchar (32)  DEFAULT   '1'   COMMENT  '任务状态 0禁用 1启用 2删除' ,    `cron_expression`  varchar (64)  DEFAULT   NULL   COMMENT  '任务运行时间表达式' ,    `job_desc`  varchar (256)  DEFAULT   NULL   COMMENT  '任务描述' ,    `create_time`  int (11)  DEFAULT   NULL ,    `update_time`  int (11)  DEFAULT   NULL ,    `operator`  varchar Java + Spring + Quartz-scheduler:在其他工作结束后解雇一个工作

spring定时任务-文件上传进度条

spring4 定时任务

quartz spring配置

Spring--quartzJob配置

spring集成quartz

(c)2006-2024 SYSTEM All Rights Reserved IT常识