查看: 125|回复: 4

【转】任务调度开源框架Quartz动态添加、修改和删除定时任务

[复制链接]
论坛徽章:
20
Mycat徽章
日期:2016-06-08 14:19:56架构徽章
日期:2018-01-11 17:24:29Hadoop研习者初级
日期:2018-01-11 17:33:01架构徽章
日期:2018-02-08 16:19:13Go徽章
日期:2018-05-10 16:26:29postgresql徽章
日期:2018-05-10 16:26:58股票徽章
日期:2018-06-29 11:14:50股票徽章
日期:2018-08-30 15:33:52股票徽章
日期:2018-11-22 15:36:24Java徽章
日期:2018-01-04 17:15:14bash徽章
日期:2017-12-15 16:07:12Oracle研习者初级
日期:2016-06-16 10:32:31
发表于 2019-5-14 00:25 | 显示全部楼层 |阅读模式

tm 框架 开源

回复

使用道具 举报

论坛徽章:
20
Mycat徽章
日期:2016-06-08 14:19:56架构徽章
日期:2018-01-11 17:24:29Hadoop研习者初级
日期:2018-01-11 17:33:01架构徽章
日期:2018-02-08 16:19:13Go徽章
日期:2018-05-10 16:26:29postgresql徽章
日期:2018-05-10 16:26:58股票徽章
日期:2018-06-29 11:14:50股票徽章
日期:2018-08-30 15:33:52股票徽章
日期:2018-11-22 15:36:24Java徽章
日期:2018-01-04 17:15:14bash徽章
日期:2017-12-15 16:07:12Oracle研习者初级
日期:2016-06-16 10:32:31
 楼主| 发表于 2019-5-14 00:26 | 显示全部楼层
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。并且还能和Spring配置整合使用。Quartz在功能上远远超越了JDK自带的Timer,很好很强大!
回复 支持 反对

使用道具 举报

论坛徽章:
20
Mycat徽章
日期:2016-06-08 14:19:56架构徽章
日期:2018-01-11 17:24:29Hadoop研习者初级
日期:2018-01-11 17:33:01架构徽章
日期:2018-02-08 16:19:13Go徽章
日期:2018-05-10 16:26:29postgresql徽章
日期:2018-05-10 16:26:58股票徽章
日期:2018-06-29 11:14:50股票徽章
日期:2018-08-30 15:33:52股票徽章
日期:2018-11-22 15:36:24Java徽章
日期:2018-01-04 17:15:14bash徽章
日期:2017-12-15 16:07:12Oracle研习者初级
日期:2016-06-16 10:32:31
 楼主| 发表于 2019-5-14 00:27 | 显示全部楼层
Quartz动态添加、修改和删除定时任务

在项目中有一个需求,需要灵活配置调度任务时间,刚开始用的Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务,虽然能够执行,但是在内部类里不能调用service,还是有很多不变,后来在网上查了很多资料,虽然本人级别不够,但是通过各种组合尝试,终于找到了方法,然后才发现竟是如此简单,汗颜。。。下面来分享给大家。

  1.说明:

spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x。在quartz1.x系列中org.quartz.CronTrigger是个类,而在quartz2.x系列中org.quartz.CronTrigger变成了接口,从而造成无法用spring的方式配置quartz的触发器(trigger)。
回复 支持 反对

使用道具 举报

论坛徽章:
20
Mycat徽章
日期:2016-06-08 14:19:56架构徽章
日期:2018-01-11 17:24:29Hadoop研习者初级
日期:2018-01-11 17:33:01架构徽章
日期:2018-02-08 16:19:13Go徽章
日期:2018-05-10 16:26:29postgresql徽章
日期:2018-05-10 16:26:58股票徽章
日期:2018-06-29 11:14:50股票徽章
日期:2018-08-30 15:33:52股票徽章
日期:2018-11-22 15:36:24Java徽章
日期:2018-01-04 17:15:14bash徽章
日期:2017-12-15 16:07:12Oracle研习者初级
日期:2016-06-16 10:32:31
 楼主| 发表于 2019-5-14 00:27 | 显示全部楼层
我使用的quartz版本是2.2.1 。

     最终实现的功能:

      1) 可添加新任务,删除任务,更新任务,暂停任务,恢复任务 ;

      2) 动态添加定时任务,按时执行相应的逻辑 ;
回复 支持 反对

使用道具 举报

论坛徽章:
20
Mycat徽章
日期:2016-06-08 14:19:56架构徽章
日期:2018-01-11 17:24:29Hadoop研习者初级
日期:2018-01-11 17:33:01架构徽章
日期:2018-02-08 16:19:13Go徽章
日期:2018-05-10 16:26:29postgresql徽章
日期:2018-05-10 16:26:58股票徽章
日期:2018-06-29 11:14:50股票徽章
日期:2018-08-30 15:33:52股票徽章
日期:2018-11-22 15:36:24Java徽章
日期:2018-01-04 17:15:14bash徽章
日期:2017-12-15 16:07:12Oracle研习者初级
日期:2016-06-16 10:32:31
 楼主| 发表于 2019-5-14 00:28 | 显示全部楼层
这样我们就可以通过这个类对定时任务做 添加新任务,删除任务,更新任务,暂停任务,恢复任务。另外说明一点,执行定时任务的类为传入的参数Class cls。这个类为反射出来的类,不归spring管理,所以在这个类里注入是不成功的,需要通过spring的上下文获取bean,并set到构造函数中去进行初始化。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2019-6-25 03:38 , Processed in 1.966231 second(s), 35 queries .