SpringBoot2.0 与 Quartz 整合
Quartz 干嘛用的?
在开发工作中,可能会遇到一些周期性的操作,比如每30分钟刷新缓存啊,每10分钟执行某操作之类的。
这样就需要用到定时器了,比如会使用 java.util.Timer工具类。
或者在Spring 框架中使用注解@Scheduled
,比如 @Scheduled(cron = "0 0/10 * * * ?")
如果一些很平常的定时任务,上面到可以满足。但有时我们需要某个定时器换一个时间点执行或者停止。这样又得重新打包部署。不是很灵活。
所以 Quartz
出现了!!!
Quartz是一个完全由java编写的开源作业调度框架。具体的概念就不说了,它的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器用来执行预定的作业。这就是Quartz怎样能并发运行多个作业的原理。Quartz依赖一套松耦合的线程池管理部件来管理线程环境。
代码开始
一、添加依赖
<dependency> |
二、添加配置
因为SpringBoot 已经集成了quartz,所以直接在配置文件 application.yml
配置
下面是存贮方式有两种:
内存和数据库,我这里用的是数据库
spring: |
所以需要一些表,在数据库导入如下SQL脚本,我的是mysql 的
DROP TABLE IF EXISTS `qrtz_blob_triggers`; |
三、撸代码
新建一个类 实现 org.quartz.Job
的 execute
方法即可,如下
|
四、触发任务
片段代码
Class cls = Class.forName("top.lrshuai.HelloJob") ; |
这样就可以启动一个 定时任务 很简单,其他的停止删除就不一一列出来了,具体的可以参看文章末尾我的代码链接。