SpringBoot整合定时任务技术Quartz

这篇具有很好参考价值的文章主要介绍了SpringBoot整合定时任务技术Quartz。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot整合定时任务技术Quartz

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

SpringBoot整合定时任务技术Quartz


# 一、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 {
    //此方法种指定具体功能
    @Override
    protected 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 {
    //工作明细(工作明细在触发器种制定工作)
    @Bean
    public JobDetail printJobDetail(){
        //绑定具体的工作
        //调用storeDurably()持久化,再build()
        return JobBuilder.newJob(MyQuartz.class).storeDurably().build();
    }

    //触发器(触发器绑定工作明细)
    @Bean
    public Trigger printTrigger(){
        //设定触发器 —— 参数:秒 分 时 日 月 星期几(0/5表示0秒开始没5秒执行一次)
        ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
        //绑定对应的工作明细
        return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();
    }
}



4.执行

执行效果

SpringBoot整合定时任务技术Quartz


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

SpringBoot整合定时任务技术Quartz文章来源地址https://www.toymoban.com/news/detail-486644.html

到了这里,关于SpringBoot整合定时任务技术Quartz的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringBoot】82、SpringBoot集成Quartz实现动态管理定时任务

    1、Quartz简介 在 SpringBoot 中,实现定时任务的方法有很多种,其中 Quartz 是较为灵活的一种,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵 活性而不牺牲简

    2024年02月11日
    浏览(26)
  • Quartz + SpringBoot 实现定时任务(多任务,多执行时间)代码模板(直接CV即可)

    quartz 是一款开源且丰富特性的Java 任务调度库 ,用于实现任务调度和定时任务。它支持各种任务类型和灵活的配置选项,具备作业持久化、集群和分布式调度、错误处理和重试机制等功能。Quartz被广泛应用于各种应用程序中,提供可靠和灵活的任务调度解决方案。 我们想要

    2024年02月08日
    浏览(38)
  • Spring Boot进阶(69):轻松实现定时任务持久化!SpringBoot集成quartz带你玩转定时任务删除、暂停、获取等操作!【附项目源码】

            现如今,随着市场竞争加剧,各个企业都在不断寻求提高效率、降低成本的方法,此时使用自动化工具已成为必不可少的选择。而在众多的自动化工具中,定时任务已经成为一项必备工具,而Quartz就是一个非常好用的定时任务框架,它的轻量级、高可靠性、易于使

    2024年02月09日
    浏览(42)
  • Spring Boot进阶(68):如何用SpringBoot轻松实现定时任务?集成Quartz来帮你!(附源码)

            Quartz是一个非常流行的开源调度框架,它提供了许多强大的功能,如定时任务调度、作业管理、任务持久化等。而SpringBoot是目前Java开发中非常流行的框架之一,其对各种开源框架集成非常方便。本篇文章将介绍如何在SpringBoot中集成Quartz,以便于更好的管理和调度

    2024年02月07日
    浏览(42)
  • Quartz实战:基于Quartz实现定时任务的动态调度,实现定时任务的增删改查

    Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析 Quartz使用文档,使用Quartz实现动态任务,Spring集成Quartz,Quartz集群部署,Quartz源码分析 此处省略了SysJob实体类,以及Mapper等对数据库的操作。 本文只是大致实现一个基于Quartz实现定时任务

    2024年02月15日
    浏览(36)
  • springboot+redis+mysql+quartz-使用pipeline+lua技术将缓存数据定时更新到数据库

    代码讲解:7.3点赞功能-定时持久化到数据库-Java程序整合pipeline+lua_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1Lg4y1w7U9 代码: blogLike_schedule/like08 · xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://gitee.com/flowers-bloom-is-the-sea/XinQiUtilsOrDemo/tree/master/blogLike_schedule/like08 数据库表:

    2024年02月13日
    浏览(32)
  • 定时任务组件Quartz

    quartz的核心概念 三步 job:做什么事,比如查询当前时间,定时清理图片 trigger:什么时候做 scheduler:什么时候做什么事 需要引入依赖 SpringBoot 通过注解配置Quartz 再运行SpringBoot的启动类。 

    2024年01月23日
    浏览(27)
  • C#--使用Quartz实现定时任务

    Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了Quartz.NET的应

    2024年02月08日
    浏览(26)
  • 分布式定时任务调度框架Quartz

    Quartz是一个定时任务调度框架,比如你遇到这样的问题: 比如淘宝的待支付功能,后台会在你生成订单后24小时后,查看订单是否支付,未支付则取消订单 比如vip的每月自动续费功能 … 想定时在某个时间,去做某件事 Quartz是一套轻量级的任务调度框架,只需要定义了 Job(

    2024年02月04日
    浏览(37)
  • Spring Boot 中实现定时任务(quartz)功能实战

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 SpringBoot 领域知识 🔎 链接 专栏 SpringBoot 专业知识学习一 SpringBoot专栏 Sprin

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包