springboot 2.0 教程-08-定时任务和Quartz

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31922571/article/details/84873361

阅读原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html
视频教程:https://www.bilibili.com/video/av35595465
课程源码:https://github.com/ibywind/springboot-learn
关注公众号 查看更多技术干货
还可加群 , 众多好基友在等你
mpjpg

springboot 书籍 PDF 下载

扫描关注上方公众号
回复关键字 boot
就可以下载这本书了
书籍的排版很好的,我自己也在看.大家可以一起交流哦
1_png

写在前面

hello 大家好

欢迎大家收看御风大世界

本次课是

springboot 系列教程第8课

我将为大家演示

springboot 如何集成Quartz 来处理定时任务

什么是定时任务?

在项目中我们经常需要实现定时任务

扫描二维码关注公众号,回复: 4413129 查看本文章

在特定的时间区间 间隔 来执行 既定的程序代码

比如周期性的 页面PV统计

日 周 月 订单总金额统计等等

还需要定时清洗数据 ETL

如果是非常简单的 一些定时任务的话

我们可以考虑使用JDK中的Timer定时任务来实现

主流定时任务框架

目前开源的主流定时任务框架

基于单节点的

Quartz

基于分布式的

当当网 elastic-job

如果大家对于 elastic-job 很感兴趣的话

我后期也会为大家 做这个方面的教程

不过我们公司自己也有 分布式任务的具体实现

由于我们公司自研产品这里我就不方便透露了

具体思路我感觉 都差不多的

elastic-job 作为开源的一个分布式定时任务调度框架

还是很优秀的

之前的公司用到过

OK 我们回来讲解

Quartz

我们来到springboot的官网

这个地方

我们看到 springboot官方解释

默认情况下任务的生命周期 是存储在 内存的

但是 你也可以选择将他们外接到数据存储

springboot集成

首先

我们spirngboot自己就有很好的 定时任务功能

并不需要集成其他 定时任务框架

我们只需要加入这个注解

就可以让springboot开启 定时任务的一些功能

然后我们需要写一个定时任务的代码

这个地方在方法上面加一个 定时任务的注解

给他一个 crontab 表达式 (跟多例子在下面)

到这里就结束了

只要启动springboot项目 这个 定时任务就会随之启动

同时 springboot 也做了一些线程池 异步 的优化

你只需要做一个统一的配置就可以了

这样你的任务 就可以启用多线程的方式来执行了

更加高效

如果你需要用到 quartz 定时任务框架

也是没有问题的

首先需要在pom.xml中引入依赖

然后就可以写代码了

这个地方 定义的是我们定时任务执行的一个 具体逻辑代码

就是你要定时来干什么东西

接下来就是结合quartz框架做一些配置了

这里他采用了 配置 和 逻辑 分离的设计

配置这一块的代码

我们用的是builder 模式

链式编程看起来很爽哦

然后 springboot启动的时候 这个 也是会启动的

我们可以在配置文件中对于quartz做一些配置

这里我之间用默认的就好了

我们需要用到cron表达式 下面这个 希望可以帮到你

三、常用表达式例子

  (1)**0 0 2 1 * ? *** 表示在每月的1日的凌晨2点调整任务

  (2)**0 15 10 ? * MON-FRI ** 表示周一到周五每天上午10:15执行作业

  (3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月最后一个星期五上午10:15执行作

  (4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

  (5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时

  (6)0 0 12 ? * WED 表示每个星期三中午12点

  (7)0 0 12 * * ? 每天中午12点触发

  (8)**0 15 10 ? * * ** 每天上午10:15触发

  (9)0 15 10 * * ? 每天上午10:15触发

  (10)**0 15 10 * * ? * ** 每天上午10:15触发

  (11)0 15 10 * * ? 2005 2005年的每天上午10:15触发

  (12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发

  (13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发

  (14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

  (15)**0 0-5 14 * * ? ** 在每天下午2点到下午2:05期间的每1分钟触发

  (16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发

  (17)**0 15 10 ? * MON-FRI ** 周一至周五的上午10:15触发

  (18)**0 15 10 15 * ? ** 每月15日上午10:15触发

  (19)**0 15 10 L * ? ** 每月最后一日的上午10:15触发

  (20)**0 15 10 ? * 6L ** 每月的最后一个星期五上午10:15触发

  (21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月最后一个星期五上午10:15触发

  (22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

代码和测试

这块是 quartz框架 打印出来的一些信息

我们会发现 两种方式的 定时任务都启动了

整个过程很顺利

结束语

如果大家对于这里比较感兴趣的话

可以去B站查看我的视频讲解

https://space.bilibili.com/193580090/#/

或者是在 github下载源码

https://github.com/ibywind/springboot-learn

猜你喜欢

转载自blog.csdn.net/qq_31922571/article/details/84873361