springboot集成Quartz定时任务组件
文章目录
- 前言
- 一、Quartz 是什么?
- 下面是对 Java 中 Quartz 的主要概念的简单描述:
- 二、使用步骤
- 总结
前言
平时开发中相信大家都经常用到定时任务吧,最近简单的就是直接使用@Scheduled注解标注到方法上用注解的方式在项目运行时无法去对任务进行管理。现在开发过程中用得比较多的就是Quartz框架了。下面直接介绍其最常见的使用方式。
一、Quartz 是什么?
Quartz 是一个功能强大的开源作业调度库,用于在 Java 应用程序中实现任务调度和定时任务。它提供了灵活的调度机制,可以根据时间表、间隔或条件触发任务的执行。
下面是对 Java 中 Quartz 的主要概念的简单描述:
-
任务(Job): Quartz 中的任务是可以执行的工作单元。你可以创建实现
org.quartz.Job接口的类,并在其中定义任务的逻辑。 -
触发器(Trigger): 触发器用于定义任务何时执行的规则。Quartz 提供了多种类型的触发器,例如简单触发器(SimpleTrigger)和 Cron 触发器(CronTrigger)。你可以配置触发器的执行时间、重复间隔和触发条件等。
-
调度器(Scheduler): 调度器是 Quartz 的核心组件,用于管理任务和触发器。它负责根据配置的规则触发任务的执行,并管理任务的调度、暂停、恢复等操作。
-
作业存储(Job Store): 作业存储是 Quartz 用于存储任务和触发器信息的持久化机制。它可以将任务和触发器的状态保存在内存中或者在数据库中进行持久化。
二、使用步骤
本次示例使用JDBCJobStore(mysql)存储任务的方式实现,这种方式也是实际开发中用得最多的方式
-
在你的 Spring Boot 项目中添加
spring-boot-starter-quartz依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId> </dependency> -
初始化脚本,org.quartz.impl.jdbcjobstore包下面存放了各数据库初始化脚本,本次实验demo,下载的是tables_mysql_innodb.sql( ps:github 上也提供了脚本,并且也有各种demo。Quartz github 脚本下载地址(mysql_innodb.sql))
-
创建一个实现了
org.quartz.Job接口的任务类,该接口定义了任务的执行逻辑。例如,你可以创建一个名为MyJob的类,实现Job接口,并重写execute方法。import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException;public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {// 执行你的任务逻辑System.out.println("Hello, Quartz!");} } -
在你的应用程序中配置 Quartz 调度器和触发器。可以通过创建一个
SchedulerFactoryBeanBean 来配置 Quartz 调度器,并将触发器与任务关联。以下是一个简单的配置示例:@Component public class StartJob {@Autowiredprivate Scheduler scheduler;// 实际开发中,创建任务关键参数,可以通过接口的进行增删改查维护定时任务,这样就可以动态的去控制定时任务了@PostConstruct public void start() throws SchedulerException {//创建触发器 定义执行频率String id = "1111111111111";Trigger trigger = TriggerBuilder.newTrigger().withIdentity(id, "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();//创建任务,指定任务处理逻辑JobDetail jobDetail = JobBuilder.newJob().ofType(TestJob.class).withIdentity(id).build();// 任务信息 存库、存在任务则更新(可以去quartz 相关表里面去看,框架自动把任务信息存到表里面了,//下次启动,只要开启了spring.quartz.auto-startup = true ,就能自动扫描quartz_表存的任务信息)scheduler.scheduleJob(jobDetail, trigger);scheduler.start();} } -
配置文件
# 项目启动自动启动定时任务调度 spring.quartz.auto-startup=true spring.quartz.job-store-type=jdbc org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
总结
以上是Quartz框架基于springboot简单demo,如果你还在springboot中使用@Scheduled注解不妨试一下Quartz定时任务框架
(需要demo代码的可以评论,私发demo git地址)
相关文章:
springboot集成Quartz定时任务组件
文章目录 前言一、Quartz 是什么?下面是对 Java 中 Quartz 的主要概念的简单描述: 二、使用步骤总结 前言 平时开发中相信大家都经常用到定时任务吧,最近简单的就是直接使用Scheduled注解标注到方法上用注解的方式在项目运行时无法去对任务进…...
代码随想录算法训练营第38天—动态规划06 | ● 完全背包 ● *518. 零钱兑换 II ● 377. 组合总和 Ⅳ
完全背包 视频讲解:https://www.bilibili.com/video/BV1uK411o7c9 https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.html 题目描述:有n件物品和一个最多能…...
C语言每日一题(63)复写零
题目链接 力扣网 1089 复写零 题目描述 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不…...
ElasticSearch聚合查询
数据准备 索引创建 PUT product {"mappings": {"properties": {"createtime": {"type": "date"},"desc": {"type": "text","fields": {"keyword": {"type": …...
【毕设级项目】基于AI技术的多功能消防机器人(完整工程资料源码)
基于AI技术的多功能消防机器人演示效果 竞赛-基于AI技术的多功能消防机器人视频演示 前言: 随着“自动化、智能化”成为数字时代发展的关键词,机器人逐步成为社会经济发展的重要主体之一,“机器换人”成为发展的全新趋势和时代潮流。在可预见…...
【一】【设计模式】类关系UML图
1. 继承(Generalization) 继承是对象间的一种层次关系,允许子类继承并扩展父类的功能。 UML线:带有空心箭头的直线,箭头指向基类(父类)。 class Parent {public void parentMethod() {System.…...
【DevOps基础篇】容器化架构基础设施监控方案
【DevOps基础篇】容器化架构基础设施监控方案 目录 【DevOps基础篇】容器化架构基础设施监控方案要监视什么不同监控系统方案比较1. Datadog2. Prometheus3. ELK(Elasticsearch、Logstash、Kibana)4. Sysdig5. 自行打造!如何选择总结推荐超级课程: Docker快速入门到精通 当…...
【QT】文件流操作(QTextStream/QDataStream)
文本流/数据流(二级制格式) 文本流 (依赖平台,不同平台可能乱码)涉及文件编码 #include <QTextStream>操作的都是基础数据类型:int float string //Image Qpoint QRect就不可以操作 需要下面的 …...
CentOS 7 devtoolset编译addressSanitizer版本失败的问题解决
在我的一个Cent OS7开发环境中,按https://yeyongjin.blog.csdn.net/article/details/134178420的方法升级GCC版本到8.3.1。 这两天,要用Google的addressSanitizer检验内存问题,加上编译参数后,却发现编译不通过。configure时直接退…...
ubuntu2004桌面系统英伟达显卡驱动安装方法
#如何查看显卡型号 lspci | grep -i vga#----output------ 01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f06 (rev a1)根据 Device 后的 值 进入网站查询 pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci #根据显卡型号,下载对应系统的驱动…...
Java通过Excel批量上传数据!!!
一、首先在前端写一个上传功能。 <template><!-- 文件上传 --><el-upload class"upload-demo" drag action"" :on-change"onChange" :auto-upload"false"><el-icon class"el-icon--upload"><up…...
【PyQT/Pysider】控件背景渐变
默认渐变配色说明 background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 178, 102, 255), stop:0.55 rgba(235, 148, 61, 255), stop:0.98 rgba(0, 0, 0, 255), stop:1 rgba(0, 0, 0, 0));这段样式表使用了qlineargradient函数来创建…...
ChatGPT-4 VS 文心一言4.0
在线体验 地址(含 gpt 3.5 / 4.0,文心 3.5 / 4.0):https://chat.tool4j.com 点击访问 文心一言和ChatGPT-4都是非常强大的自然语言处理模型,它们都能够在对话系统和其他NLP应用中发挥巨大的作用。然而,它们…...
MYSQL------从概述到DQL
数据库(数据管理,数据存储的仓库) 数据库管理系统(操纵和管理数据库的大型软件) SQL是操作关系型的编程语言,是一套标准 MySQL下载安装完成以后,可以进行启动和停止操作,对于启动和停…...
MATLAB算法实战应用案例精讲-【图像处理】图像识别(基础篇)(二)
目录 数字图像处理基本知识 传统图像处理方法进行瑕疵检测 传统算法方向的选择...
Leetcode 3.12
leetcode hot 100 链表1.两两交换链表中的节点2.随机链表的复制3.排序链表 链表 1.两两交换链表中的节点 两两交换链表中的节点 1.必须要设置一个dummy (temp) 结点2.保存第二个节点3.先让第一个节点指向第三个节点4.再让第二个节点指向第一个节点5.最后让dummy指向第二个节点…...
【天池课堂】零基础入门数据挖掘-课程汇总
写在前面: 如果你现在很迷茫,但是又对数据挖掘感兴趣,建议先看看以下两个视频直播,两位大佬亲身讲述自己和数据挖掘的前世今生。 《如何入门数据挖掘竞赛》 鱼遇雨欲语与余。天池明星选手,武汉大学硕士,天…...
表单进阶(3)-上传文件和隐藏字段
上传文件:<input type"file"> 隐藏字段:<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled:<button disabled"disabled">注册</bu…...
LLM(大语言模型)常用评测指标-MAP@R
MAPR (Mean Average Precision at R) 是一种用于评估信息检索系统或排序模型效果的评价指标。它特别适用于那些返回一组相关结果的情况,例如搜索引擎或推荐系统。这里的“R”代表返回的相关结果的数量。MAPR 考虑了结果的排名和相关性两个因素。 计算方法 计算平…...
腾讯面经学习笔记
💖 前言 👩🏫 参考地址 💖 操作系统 1. 进程和线程的区别 本质区别 进程是操作系统资源分配的基本单位线程是任务调度和执行的基本单位 开销方面 每个进程都有独立的代码和数据空间(程序上下文)&#…...
保姆级教程:2024最新CUDA12.4+Pytorch2.5.1环境配置(附CUDAnn9.5避坑指南)
2024深度学习环境搭建实战:CUDA 12.4与PyTorch 2.5.1完美配置手册 刚接触深度学习的开发者们,是否曾被环境配置的各种报错折磨到怀疑人生?显卡驱动版本冲突、CUDA与PyTorch版本不匹配、环境变量配置错误……这些问题就像拦路虎,让…...
无需安装claude code,在快马平台5分钟构建你的第一个代码生成器原型
最近在研究代码生成工具时,发现Claude Code这个新兴项目挺有意思的。它能够根据自然语言描述生成对应的代码,对于快速原型开发特别有帮助。不过在实际尝试时,我发现本地安装配置过程有点麻烦,需要处理各种环境依赖和版本兼容问题。…...
快速验证域名跳转思路:用快马十分钟搭建jxx登录页检测工具原型
快速验证域名跳转思路:用快马十分钟搭建jxx登录页检测工具原型 最近注意到"jxx登录网页最新域名在哪"这个关键词搜索量突然增加,很多用户都在寻找特定网站的访问入口。这种需求其实很常见——当某个服务频繁更换域名时,普通用户很…...
vue3 中路由 vue-router 的使用
理解 createRouter、createWebHistory 组合式 API 中的 useRoute、useRouter的使用createRouter 的作用 功能:创建一个 Vue Router 实例,管理应用的路由跳转、历史记录、导航守卫等。 参数:接收一个配置对象,核心属性:…...
TMSpeech终极指南:如何用免费开源工具实现Windows实时语音转文字,让会议记录变轻松
TMSpeech终极指南:如何用免费开源工具实现Windows实时语音转文字,让会议记录变轻松 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 还在为冗长的会议记录而头疼吗?还在为在线学习…...
GD32450i-EVAL开发实战:TLI接口配置与双图层应用解析
1. GD32450i-EVAL开发板与TLI接口初探 第一次拿到GD32450i-EVAL开发板时,那块480x272的RGB屏幕立刻吸引了我的注意。作为GD32F450芯片的官方评估板,它内置的TLI(TFT-LCD Interface)接口让图形显示开发变得异常简单。TLI接口本质上…...
QMCDecode技术解密:让加密音频重获自由的无损转换方案
QMCDecode技术解密:让加密音频重获自由的无损转换方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转…...
避坑指南:OpenClaw接入百川2-13B-4bits量化模型常见报错大全
避坑指南:OpenClaw接入百川2-13B-4bits量化模型常见报错大全 1. 为什么选择百川2-13B-4bits量化模型 去年我在搭建个人知识管理自动化系统时,第一次尝试将OpenClaw接入本地部署的大模型。当时显存只有12GB的RTX 3060让我在模型选择上捉襟见肘ÿ…...
前端项目云服务器(阿里云/腾讯云轻量应用服务器)部署 付费说明+使用说明
便宜稳定部署:云服务器极简方案(付费,新手性价比首选) 阿里云 / 腾讯云 轻量应用服务器,属于付费部署方案,但性价比极高,是三种方案中唯一能实现“永久在线、长期稳定运行”的部署方式…...
Rails API应用数据一致性终极指南:乐观锁与悲观锁对比详解
Rails API应用数据一致性终极指南:乐观锁与悲观锁对比详解 【免费下载链接】rails-api Rails for API only applications 项目地址: https://gitcode.com/gh_mirrors/ra/rails-api 在现代Web应用开发中,数据一致性是API设计的核心挑战之一。Rails…...
