当前位置: 首页 > 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搭…...

绕开原厂协议:非侵入式梯控改造的OT架构解耦与状态机设计

摘要&#xff1a; 在机器人跨层调度项目中&#xff0c;架构师常面临特种设备管理方“严禁改动原生电路与读取主板总线”的硬性约束。本文深度拆解如何通过引入边缘设备&#xff0c;实现 OT&#xff08;操作技术&#xff09;层面的彻底解耦。重点探讨在非侵入式架构下&#xff0…...

智能车浅谈——电机控制篇

文章目录前言运动控制系统被控对象执行机构控制器反馈环节M法测速&#xff1a;T法测速小结直流调速系统桥式可逆PWM变换器&#xff08;1&#xff09;正向运行&#xff08;2&#xff09;反向运行总结智能车系列文章汇总前言 之前借用自动控制原理对智能车的方向控制做了一个简单…...

Goreman RPC接口完全解析:远程控制进程的终极方案

Goreman RPC接口完全解析&#xff1a;远程控制进程的终极方案 【免费下载链接】goreman foreman clone written in go language 项目地址: https://gitcode.com/gh_mirrors/go/goreman Goreman是一款用Go语言编写的进程管理工具&#xff0c;作为Foreman的克隆版本&#…...

终极免费CAJ转PDF解决方案:caj2pdf完整使用指南

终极免费CAJ转PDF解决方案&#xff1a;caj2pdf完整使用指南 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换&#xff0c;成功与否&#xff0c;皆是玄学。 项目地址: https://gitcode.com/gh_mirro…...

WarcraftHelper:魔兽争霸III游戏优化与兼容性解决方案

WarcraftHelper&#xff1a;魔兽争霸III游戏优化与兼容性解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款针对魔兽争霸I…...

1980-2025年中国各区县逆温数据

1980&#xff5e;2025 年中国各区县逆温数据 该数据包含如下变量&#xff0c;各个变量的含义如下&#xff1a; date&#xff1a;日期 year&#xff1a;年 mnth&#xff1a;月 day&#xff1a;日 省&#xff1a;省份名称 省代码&#xff1a;省份行政区划代码 市&#xf…...

2001-2024年上市公司供应链地理距离

一家企业的供应商和客户&#xff0c;究竟分布在多远的空间范围内&#xff1f; 这一问题不仅关系到企业采购与销售网络的空间延伸程度&#xff0c;也关系到区域市场整合、要素跨区流动以及企业突破本地市场约束的能力。已有研究表明&#xff0c;企业的供应商选择和客户拓展通常会…...

如何突破AI编程工具的设备限制:go-cursor-help开源工具深度解析

如何突破AI编程工具的设备限制&#xff1a;go-cursor-help开源工具深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial reques…...

如何用CustomTkinter解决Python桌面应用界面过时问题:3个关键技巧

如何用CustomTkinter解决Python桌面应用界面过时问题&#xff1a;3个关键技巧 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter 你是否曾为Python桌面应用界面…...

OpenClaw简介|OpenClaw衍生产品|OpenClaw辅助工具

OpenClaw简介OpenClaw是一个开源的多功能机器人爪手设计项目&#xff0c;专注于提供低成本、模块化的机械爪解决方案&#xff0c;适用于科研、教育及工业自动化场景。其设计强调灵活性和可定制性&#xff0c;支持3D打印制造&#xff0c;便于用户根据需求调整结构和功能。核心特…...