当前位置: 首页 > news >正文

Springboot 开发之 Quartz 任务调度框架简介

引言

Quartz Scheduler是一个功能丰富的开源作业调度库,它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析:

  • 官网地址:https://www.quartz-scheduler.org/
  • w3cschool 官方文档:https://www.w3cschool.cn/quartz_doc/

一、核心概念

Quartz Scheduler的核心概念主要包括三个部分:

  • Job:表示被调度的任务,需要实现org.quartz.Job接口中的execute方法。
void execute(JobExecutionContext context)
  • JobDetail,用于设置任务的属性,如任务的名称、组名、任务类、任务数据等。
  • Trigger:表示触发器,用于定义任务执行的时间规则。Quartz提供了两种主要的触发器类型:SimpleTriggerCronTriggerSimpleTrigger用于在 特定时间后开始执行,并以一定的重复间隔执行。CronTrigger则基于Cron表达式,提供了更复杂的时间调度能力。
  • Scheduler:调度器,是Quartz框架的心脏,负责基于Trigger设定的时间来执行Job。它管理着所有的Job和Trigger,确保它们能够按照预定的计划执行。

在这里插入图片描述

二、Springboot 集成 quartz

1. 创建一个新的 Spring Boot 项目,添加 Quartz 依赖到 pom.xml 文件中:


<dependencies><!-- 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
</dependencies>

2. Quartz 配置

在 Spring Boot 应用中配置 Quartz,主要涉及到配置类和任务的创建。

(1)配置类

创建一个配置类,用于配置 Quartz 的相关属性:

@Configuration
public class QuartzConfig {@Beanpublic JobStore jobStore(DataSource dataSource) {JDBCJobStoreFactoryBean factory = new JDBCJobStoreFactoryBean();factory.setDataSource(dataSource);factory.setTablePrefix("QRTZ_");return factory.getObject();}@Beanpublic SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {SchedulerFactoryBean factory = new SchedulerFactoryBean();factory.setJobStore(jobStore(dataSource));// 可以设置其他属性,如线程池大小等return factory;}// 省略其他配置...
}

(2)任务和触发器

定义一个任务,实现 Job 接口,并创建触发器来触发任务:

@Component
public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext context) {// 任务逻辑System.out.println("执行任务:" + new Date());}
}

创建触发器和作业详情,并注册到调度器:

@Service
public class JobService {@Autowiredprivate Scheduler scheduler;@PostConstructpublic void init() throws SchedulerException {JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myJob", "group1").build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) // 每10秒执行一次.build();scheduler.scheduleJob(jobDetail, trigger);}
}

实战演练
启动 Spring Boot 应用
运行 Spring Boot 应用的主类,应用将启动并初始化 Quartz,开始执行定时任务。

验证任务执行
观察控制台输出,你将看到任务按照预定的计划执行,并打印出执行的时间。

参考文献:

  • https://www.cnblogs.com/muxi0407/p/11969119.html

相关文章:

Springboot 开发之 Quartz 任务调度框架简介

引言 Quartz Scheduler是一个功能丰富的开源作业调度库&#xff0c;它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析&#xff1a; 官网地址&#xff1a;https://www.quartz-scheduler.org/w3cschool 官方文档&#xff1a;https://www.w3c…...

详解Xilinx FPGA高速串行收发器GTX/GTP(4)--TX/RX接口的数据位宽和时钟设计

目录 1、时钟设计 2、TX接口 3、接口位宽与时钟的关系 4、时钟来源方案 5、TX端内部的时钟分频设计 6、RX接口 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、时钟设计 GT收发器内部比较复杂,所使用的时钟就不止一个,比较主要的时钟有两个,架构…...

idea个人常用快捷键设置

个人开发者自查便于新环境配置快速查阅&#xff0c;统一windows与mac快捷键设置&#xff0c;有相同习惯的同学可自取。如果有一天你的快捷键不好用了&#xff0c;请一定记得看这篇文章&#xff0c;整理不易&#xff0c;留下关注再走呗。 基本操作快捷键 操作中文名称操作名快捷…...

超实用 不再担心猫咪掉毛 一文教你养宠家庭空气净化器怎么选

一到夏天&#xff0c;家中的猫咪给你带来的不仅仅是温暖的陪伴&#xff0c;还有那挥之不去的宠物异味。普通空气净化器虽然能够应对一般的空气净化需求&#xff0c;但对于养猫家庭特有的挑战&#xff0c;如宠物毛发、皮屑和异味等&#xff0c;它们往往难以胜任。专业的宠物空气…...

深入理解HTTP/2:nghttp2库源码解析及客户端实现示例

文章目录 一、HTTP/2 特性实现&#xff1a;nghttp2 源码剖析1.1 二进制帧1.2 多路复用1.3 头部压缩1.4 服务器推送1.5 总结 二、使用 nghttp2 库创建一个 HTTP/2 客户端三、结语 在互联网时代&#xff0c;网络传输协议的作用至关重要。在本文中&#xff0c;我们将对 HTTP/2 的一…...

如何在印尼新闻媒体发布新闻稿件:通稿宣发的好处

如何在印尼新闻媒体发布新闻稿件&#xff1a;通稿宣发的好处 在全球化的时代&#xff0c;新闻稿件的发布和传播对于企业、组织或个人来说至关重要。尤其在印尼这样的东南亚国家&#xff0c;新闻媒体的力量不容忽视。本文将探讨在印尼新闻媒体发布新闻稿件的优势&#xff0c;以…...

如何在 Linux 系统上更改 SSH 服务端口以增强服务器安全性

SSH 服务器默认使用 22 端口&#xff0c;这使得攻击者可以轻松识别并尝试攻击 SSH 服务。为了增加服务器的安全性&#xff0c;建议更改默认的 SSH 端口。本文将详细介绍如何在 Linux 系统上更改 SSH 服务端口&#xff0c;并包含一些最佳实践和注意事项。 1. 检查新的 SSH 端口…...

c++11新特性 -nullptr

今天遇到一道不错的题目&#xff0c;主要讲了c11对nullptr的特性。 首先&#xff1a;nullptr 是C11引入的一个关键字&#xff0c;用于表示“空指针常量”&#xff0c;它是类型std::nullptr_t的唯一值。nullptr 的引入解决了C语言风格的空指针字面量&#xff08;如NULL或0&#…...

kubernets学习笔记——Kubernets 命令行工具 kubectl

目录 kubectl 的使用方法1、语法2、操作3、资源类型4、输出格式5、示例&#xff1a;常用操作6、示例&#xff1a;创建和使用插件 kubectl 的使用方法 Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。这个工具叫做 kubectl。通…...

Hadoop单机及集群部署

目录 一、Hadoop 单机模式部署1. 环境准备2. 安装 Java3. 下载并安装 Hadoop4. 配置环境变量5. 配置 Hadoop编辑 core-site.xml编辑 hdfs-site.xml编辑 mapred-site.xml编辑 yarn-site.xml 6. 格式化 Namenode7. 启动 Hadoop 服务8. 验证 Hadoop注意事项 二、Hadoop 集群模式部…...

使用es-hadoop同步hive和es之间数据

&#x1f4bb;近期在华为云连接es时的时候发现不能输入账号密码&#xff0c;后面联系华为工程师了解到&#xff0c;华为云默认是非安全模式&#xff0c;即不需要输入账号密码。 如果对你有所帮助&#xff0c;欢迎点赞收藏关注不迷路哦&#x1f493; 目录 使用es-hadoop同步h…...

Java - 泛型 + JUnit

一、泛型(参数化类型,在编译时确定) 泛型是一种可以接收数据类型的数据类型(可以这么理解) 作用&#xff1a; 1.能对加入到集合中的数据类型进行约束 2.遍历的时候&#xff0c;不需要进行类型转换&#xff0c;提高效率(因为遍历时&#xff0c;默认的是Object,需要进行类型转换的…...

vue3实现包含表格的Word文件导出

vue3实现包含表格的Word文件导出 近期遇到一个要求&#xff0c;需要在网页上导出Word文档&#xff0c;文档中有表格&#xff0c;也有普通的数据&#xff0c;查阅了很多资料&#xff0c;总算比较完美的解决了&#xff0c;记录一下 先上一下最终效果 演示视频 vue3项目根据Wor…...

【深度学习】TTS,CosyVoice,推理部署的代码原理讲解分享

文章目录 demo代码加载配置文件speech_tokenizer_v1.onnx(只在zero_shot的时候使用)campplus.onnx(只为了提取说话人音色embedding)`campplus_model` 的作用代码解析具体过程解析总结示意图CosyVoiceFrontEndCosyVoiceModel推理过程总体推理过程推理速度很慢: https://git…...

flask高频面试题

目录 高频面试题及答案1. 如何在Flask中处理数据库迁移&#xff1f;2. Flask如何处理文件上传&#xff1f;3. 如何在Flask中处理跨域请求&#xff08;CORS&#xff09;&#xff1f;4. 如何在Flask中实现用户认证&#xff1f;5. Flask如何处理会话&#xff1f;6. Flask如何处理表…...

尚硅谷谷粒商城项目笔记——五、使用docker安装mysql

五、使用docker安装mysql 注意&#xff1a; 因为电脑是AMD芯片&#xff0c;自己知识储备不够&#xff0c;无法保证和课程中用到的环境一样&#xff0c;所以环境都是自己根据适应硬件软件环境重新配置的&#xff0c;这里的虚拟机使用的是VMware。 使用 Docker 安装 MySQL 与安…...

filebeat + logstash使用笔记

背景 本文中有2台主机&#xff1a; &#xff08;1&#xff09;1.1.1.1是OpenStack的nova节点&#xff0c;安装filebeat &#xff08;2&#xff09;1.1.1.2是logstash节点 在1.1.1.1上通过filebeat读取OpenStack的nova-compute组件日志&#xff08;/var/log/nova/nova-compute.…...

学校考场电子钟设置自动开关机,节能环保

在标准化考试中&#xff0c;准确的时间显示对于确保考试的公正性和秩序至关重要。然而&#xff0c;传统的电子钟系统往往存在一些问题&#xff0c;影响了考试管理的效率。 一、学校普通电子钟使用问题 二、学校考场电子钟优点 学校同步时钟系统通过自动同步网络或卫星时间的方式…...

短剧APP系统开发带来了哪些发展空间?

在影视行业快速发展的时期&#xff0c;短剧作为一种新兴的影视模式&#xff0c;获得了大众的欢迎。目前&#xff0c;短剧行业巨大的发展空间&#xff0c;再次成为大众关注的焦点。 随着移动互联网的发展&#xff0c;信息技术不断升级进步&#xff0c;短剧APP系统的开发&#x…...

PaddlePaddle / PaddleOCR踩坑记,动手实现一个OCR服务器

文章目录 一、环境搭建1、官网2、准备环境 二、编码实现一个web程序 一、环境搭建 1、官网 https://gitee.com/paddlepaddle/PaddleOCR#/paddlepaddle/PaddleOCR/blob/main/doc/doc_ch/quickstart.md 2、准备环境 本地环境坑太多了&#xff0c;好在官网还有一种基于docker搭…...

别再吹牛了,% Vibe Coding 存在无法自洽的逻辑漏洞!蕾

简介 langchain中提供的chain链组件&#xff0c;能够帮助我门快速的实现各个组件的流水线式的调用&#xff0c;和模型的问答 Chain链的组成 根据查阅的资料&#xff0c;langchain的chain链结构如下&#xff1a; $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...

二次型标准化实战:五种方法在机器学习特征降维中的应用

1. 二次型标准化与特征降维的奇妙关联 第一次听说要把二次型标准化方法用在机器学习特征降维时&#xff0c;我的反应和大多数工程师一样&#xff1a;"这俩八竿子打不着的概念能扯上关系&#xff1f;"直到在电商用户行为分析项目中遇到高维数据灾难&#xff0c;才真正…...

互联网大厂Java求职者面试实录:严肃面试官VS搞笑水货程序员小李

互联网大厂Java求职者面试实录&#xff1a;严肃面试官VS搞笑水货程序员小李 第一轮提问&#xff1a;Java基础与多线程 面试官&#xff1a;小李&#xff0c;Java中HashMap的工作原理是什么&#xff1f;当多线程并发访问时会出现什么问题&#xff1f; 小李&#xff1a;HashMap就是…...

计算机二级C语言常考选择题

经原国家教育委员会&#xff08;现教育部&#xff09;批准、由教育部考试中心主办、面向社会、用于考查非计算机专业应试人员计算机应用知识与技能的全国性计算机水平考试体系&#xff0c;是全国计算机等级考试&#xff08;National Computer Rank Examination&#xff0c;以下…...

直面胶粘行业痛点,0111矢量可移技术如何助力企业降本增效!

一、行业困境&#xff1a;传统胶粘制品的四大结构性矛盾在胶粘制品的应用场景中&#xff0c;一个长期存在却被忽视的行业痛点正在被越来越多的制造商、工程方和终端用户所正视——传统胶粘产品在"粘"与"净"之间&#xff0c;始终面临难以调和的两难困境。传…...

ChatGLM3-6B快速上手:智能缓存技术,刷新页面无需重载模型

ChatGLM3-6B快速上手&#xff1a;智能缓存技术&#xff0c;刷新页面无需重载模型 1. 项目简介与核心价值 ChatGLM3-6B是智谱AI与清华大学KEG实验室联合推出的开源对话模型&#xff0c;基于Streamlit框架深度重构&#xff0c;打造了零延迟、高稳定的本地智能对话系统。与传统云…...

Redis闭源后如何选择?亚马逊云科技Valkey开源替代方案全解析

1. Redis闭源背景下的技术选择困境 去年Redis官方宣布核心代码转向限制性许可协议后&#xff0c;整个开发者社区都面临着关键抉择。作为曾经最受欢迎的开源内存数据库&#xff0c;Redis的突然转向让许多依赖其开源特性的企业措手不及。我亲眼见过不少团队在技术选型会上激烈争…...

Android - 服务 Service

前台20s后台200s不执行玩就报ANR异常。 一、概念 没有界面在后台长期运行在主线程中的一个组件&#xff0c;后台运行的功能如果不放在 Service 里&#xff08;如在单例工具类里音乐播放器&#xff09;&#xff0c;APP切出去容易被系统回收。 1.1 Service 类型 后台服务 start…...

Pixel Dream Workshop集成Dify应用流:构建AI绘画工作台实战

Pixel Dream Workshop集成Dify应用流&#xff1a;构建AI绘画工作台实战 1. 为什么需要AI绘画工作流自动化 电商公司每天需要生产数百张商品展示图&#xff0c;自媒体团队每周要创作几十套视觉内容&#xff0c;游戏工作室的角色设计需求源源不断。传统人工绘制方式不仅成本高、…...

2026年OpenClaw(Clawdbot)华为云1分钟本地超简单安装及使用方法【超全】

2026 OpenClaw怎么部署&#xff1f;还在为部署OpenClaw到处找教程踩坑吗&#xff1f;别再瞎折腾了&#xff01;OpenClaw一键部署攻略来了&#xff0c;无需代码、只需两步&#xff0c;新手小白也能轻松拥有专属AI助理&#xff01; ​ 一、先搞懂&#xff1a;OpenClaw是什么&…...