SpringBoot整合定时任务技术Quartz

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

@RequestMapping注解

      • 🚀Quartz应用场景
    • 1.导入Quartz相关坐标
    • 2.定义具体任务
    • 3. 配置类
    • 4.执行
  • 二、SpringBoot整合定时任务技术task(简单好用)
    • Spring task定时任务相关配置


# 一、SpringBoot整合定时任务技术Quartz

🚀Quartz应用场景

Spring Boot整合Quartz的定时任务技术可以应用于许多不同的场景。如:

  1. 定时任务调度:Quartz提供了强大的定时任务调度功能,可以帮助你在指定的时间点或按照一定的时间间隔执行任务。这在需要定期执行一些后台任务、批量数据处理、数据同步等场景下非常有用。

  2. 数据清理与归档:在系统中,可能会生成大量的临时性或历史性数据,使用Quartz可以定时执行数据清理任务,清除过期或不再需要的数据,保持系统的存储空间和性能。

  3. 缓存刷新:当系统中的一些缓存数据需要定期刷新时,可以使用Quartz定时执行任务来触发缓存的刷新操作。这可以确保缓存数据的有效性和实时性。

  4. 邮件发送:在某些场景下,需要定时发送邮件通知,比如每天发送一份报表、定期发送统计数据等。通过Quartz可以配置定时任务,定时触发邮件发送操作。

  5. 定时数据备份:定时对关键数据进行备份是一种常见的数据安全策略。使用Quartz可以定期触发数据备份任务,确保系统数据的安全性和可恢复性。

  6. 系统监控与报警:通过定时任务,可以定期对系统状态进行检查,例如CPU使用率、内存占用、磁盘空间等,当系统出现异常或达到阈值时,可以触发报警机制进行预警处理。

  7. 定时数据分析和生成报表:在数据分析和报表生成场景中,可以利用Quartz定时触发数据分析任务,生成相应的报表和统计结果。


相关概念

  • 工作(Job):用于定义具体执行的工作
  • 工作明细(JobDetail):用于描述定时工作相关的信息
  • 触发器(Trigger):用于描述触发工作的规则,通常使用corn表达式定义调度规则
  • 调度器(Scheduler):描述了工作明细与触发器的对应关系

1.导入Quartz相关坐标

pom.xml文件:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId><scope>test</scope></dependency>


2.定义具体任务

定义具体要执行的任务,继承QuartzJobBean抽象类

/*** @author .29.* @create 2023-04-03 16:09*/
//第一步:造任务
//使用Quartz技术,需要让类继承QuartzJobBean抽象类,实现其抽象方法
public class MyQuartz extends QuartzJobBean {//此方法种指定具体功能@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {System.out.println("quartz is running ...");}
}



3. 配置类

定义工作明细与触发器,绑定对应关系

/*** @author .29.* @create 2023-04-03 16:14*/
//第二步:设置配置类
@Configuration
public class QuartzConfig {//工作明细(工作明细在触发器种制定工作)@Beanpublic JobDetail printJobDetail(){//绑定具体的工作//调用storeDurably()持久化,再build()return JobBuilder.newJob(MyQuartz.class).storeDurably().build();}//触发器(触发器绑定工作明细)@Beanpublic Trigger printTrigger(){//设定触发器 —— 参数:秒 分 时 日 月 星期几(0/5表示0秒开始没5秒执行一次)ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");//绑定对应的工作明细return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();}
}



4.执行

执行效果

在这里插入图片描述


Spring Boot整合Quartz的定时任务技术可以应用于许多不同的场景,帮助我们实现定时执行任务、数据清理、缓存刷新、邮件发送、数据备份、系统监控与报警、数据分析和报表生成等功能。这些场景都需要定期执行一些重复性或后台的任务,Quartz能够提供灵活而可靠的定时任务调度功能,帮助我们简化开发和管理。




二、SpringBoot整合定时任务技术task(简单好用)



SpringBoot启动类使用@EnableScheduling注解,开启定时任务功能

@SpringBootApplication
@EnableScheduling
public class Springboot5TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot5TaskApplication.class, args);}}

设置定时执行的任务,并设定执行周期

/*** @author .29.* @create 2023-04-03 20:41*/
@Component
public class MyBean {//使用 @Scheduled注解绑定执行的任务,参数以cron表达式设定执行时间及频率@Scheduled(cron = "0/2 * * * * ?")public void print(){System.out.println("spring task is running ...");}
}


Spring task定时任务相关配置


SpringBoot工程配置文件application.yml

spring:task:scheduling:# 任务调度线程池大小:默认为1size: 1# 任务线程名称前缀 默认 scheduling-thread-name-prefix: task_shutdown:# 线程池关闭时等待所有任务完成await-termination: false# 调度线程关闭前最大等待时间,确保最后一定关闭await-termination-period: 10s

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/4513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在教育领域中使用ChatGPT有哪些优点?

人工智能在教育领域的应用正在迅速增加。OpenAI于2022年11月开发的聊天机器人ChatGPT在全球范围内广受欢迎。 由于其受欢迎程度以及生成类似人类问题的回答的能力&#xff0c;ChatGPT正在成为许多学习者和教育工作者值得信赖的伴侣。然而&#xff0c;与任何新兴技术一样&#x…

2019年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&#xff0c;题目常常看&a…

原码的表示

原码表示 定点整数源码与定点小数源码 源码表示例题 正数与负数转换直接将高位变为1即可 原码的性质 原码的优缺点 乘除法直接符号位异或&#xff0c;数值相乘除即可加法与减法需要先判断两个数值的大小然后确定符号位

2.SpringBoot运维实用篇

SpringBoot运维实用篇 ​ ​ 下面就从运维实用篇开始讲&#xff0c;在运维实用篇中&#xff0c;我给学习者的定位是玩转配置&#xff0c;为开发实用篇中做各种技术的整合做好准备工作。 主要分为以下内容&#xff1a; SpringBoot程序的打包与运行配置高级多环境开发日志 ​…

【需求实现】Tensorflow2的曲线拟合(二):进度条简化

文章目录 导读普通的输出方式上下求索TensorBoard是个不错的切入点与Callback参数对应的Callback方法官方的内置Callback官方进度条简单的猜测与简单的验证拼图凑齐了&#xff01; 导读 在训练模型的过程中往往会有日志一堆一堆的困扰。我并不想知道&#xff0c;因为最后我会在…

【域名详解】网络杂谈(13)之深入简出了解什么是域名

涉及知识点 什么是域名&#xff0c;域名的概念&#xff0c;域名的结构&#xff0c;域名地址的寻址过程&#xff0c;深入了解域名的寻址机制。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感激 文章目录 涉及知识点…

基于Tars高并发IM系统的设计与实现-基础篇1

基于Tars高并发IM系统的设计与实现–基础篇1 作者简介 兰怀玉 毕业于中央民族大学计算机专业 先后供职国内外多家公司软件研发设计岗位&#xff0c;有丰富的软件研发经验。 从事IM领域设计研发十余年&#xff0c;先后领衔多个IM通讯系统设计与研发发&#xff0c;拥有丰富的IM…

linux下RabbitMQ的使用

文章目录 linux下RabbitMQ的使用首先docker启动网页打开网址&#xff1a;用户名和密码登录创建exchanges:创建Queues增加Queues的Bind linux下RabbitMQ的使用 首先docker启动 su rootsudo docker run -d --hostname rabbitsvr --name rabbit -p 5672:5672 -p 15672:15672 -p …

ChatGPT实战:项目管理

人工智能有可能彻底改变许多行业&#xff0c;包括项目管理&#xff0c;及时了解最新技术以及它如何影响你的工作至关重要&#xff0c;因为学习好项目管理&#xff0c;不管你能不能做项目经理&#xff0c;在生活、工作的方面方面都会享受到懂得项目管理后带来的收益。 下面我们借…

c# Invoke使用

在多线程编程中&#xff0c;我们经常要在工作线程中去更新界面显示&#xff0c;而在多线程中直接调用界面控件的方法是错误的做法&#xff0c;Invoke 和 BeginInvoke 就是为了解决这个问题而出现的&#xff0c;使你在多线程中安全的更新界面显示。 正确的做法是将工作线程中涉…

发送邮箱验证码【spring boot】

⭐前言⭐ ※※※大家好&#xff01;我是同学〖森〗&#xff0c;一名计算机爱好者&#xff0c;今天让我们进入学习模式。若有错误&#xff0c;请多多指教。更多有趣的代码请移步Gitee &#x1f44d; 点赞 ⭐ 收藏 &#x1f4dd;留言 都是我创作的最大的动力&#xff01; 1. 思维…

Maven manual

Download maven Download 设置 system env… E:\apache-maven-3.9.3\bin查看版本信息 mvn -v Apache Maven 3.9.3 (21122926829f1ead511c958d89bd2f672198ae9f) Maven home: E:\apache-maven-3.9.3与Eclipse integrate Referrence&#xff0c;通常Eclipse原本就已经集成&am…