spring-boot-route(二十一)quartz 实现动态定时任务
Quartz
是一个定时任务的调度框架,涉及到的主要概念有以下几个:
Scheduler
:调度器,所有的调度都由它控制,所有的任务都由它管理。
Job
:任务,定义业务逻辑。
JobDetail
:基于Job,进一步封装。其中关联一个Job,并为Job指定更详细的信息。
Trigger
:触发器,可以指定给某个任务,指定任务的触发机制。
一 创建简单任务
1.1 Quartz依赖
1.2 创建任务
任务创建需要实现Job
接口,重写execute(JobExecutionContext jobExecutionContext)
方法,增加定时任务的业务逻辑,这里我只是简单的打印一下定时任务执行。
1.3 JobDetail增加属性
这里增加的属性可以在Job实现类中获取,来处理业务。
1.4 Trigger实现
Trigger分为两种,SimpleTrigger
和CronTrigger
。SimpleTrigger
是根据Quartz的一些api实现的简单触发行为。CronTrigger
用的比较多,使用cron
表达式进行触发。这里先用SimpleTrigger
来实现。
1.5 启动任务
1.6 执行效果
启动项目后,任务立即执行,每秒执行一次,10s后停止,执行效果图如下:
二 动态操作定时任务
有时候除了已经开发好的定时任务外,还需要我们手动去创建任务并且控制任务的执行。
2.1 创建任务
2.2 暂停任务
2.3 恢复暂停的任务
2.4 删除定时任务
三 任务持久化
Quartz默认使用RAMJobStore
存储方式将任务存储在内存中,除了这种方式还支持使用JDBC将任务存储在数据库,为了防止任务丢失,我们一般会将任务存储在数据库中。
这里使用mysql进行存储,在quartz的源码包中找到文件tables_mysql_innodb.sql
,然后在客户端进行运行sql文件。如果嫌源码包不好下载的话,我已经将sql文件上传至GitHub了,可以直接访问github拉去表结构,数据表如下:
3.1 增加mysql和jdbc依赖
3.2 指定使用jdbc存储
quartz默认使用memory存储,这里修改成jdbc进行存储,并配置jdbc的相关信息
3.3 创建任务
启动项目,调用create
接口创建任务,然后数据表中就会新增任务相关的数据了。
此是spring-boot-route系列的第二十一篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同学有一个系统的认识。本文已收录至我的github,欢迎各位小伙伴star
!
github:https://github.com/binzh303/spring-boot-route
点关注、不迷路
如果觉得文章不错,欢迎关注、*点赞*、收藏,你们的支持是我创作的动力,感谢大家。
如果文章写的有问题,请不要吝惜文笔,欢迎留言指出,我会及时核查修改。
如果你还想更加深入的了解我,可以微信搜索「Java旅途」进行关注。回复「1024」即可获得学习视频及精美电子书。每天7:30准时推送技术文章,让你的上班路不在孤独,而且每月还有送书活动,助你提升硬实力!
版权声明: 本文为 InfoQ 作者【Java旅途】的原创文章。
原文链接:【http://xie.infoq.cn/article/8ea7ebd85e1f70536cd5728a5】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论