springboot整合Quartz实现定时任务

news2025/1/6 22:19:34

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 1.核心概念
  • 2.基础实现
    • 2.1引入依赖
    • 2.2创建具体逻辑类
    • 2.3配置类
  • 总结


前言

在项目中我们会有许多要进行定时执行逻辑的业务场景,比如定期生成日报、定期发送通知等。在遇到这些场景时,使用Quartz框架可以快速的完成功能。


1.核心概念

Job:任务。定时执行的具体任务内容
JobDetail:任务详情。即与任务相关的其他配置信息
Trigger:触发器,主要负责描述任务执行的时间规则(特定时间频率或者时间点)
Scheduler:调度器。将Job和Trigger整合起来
在这里插入图片描述

2.基础实现

2.1引入依赖

在这里插入图片描述

2.2创建具体逻辑类

我们需要编写实现具体逻辑的类,这个类要么实现Job接口,要么继承QuartzJobBean类
这里我们使用第一种
在这里插入图片描述
在Job实现类上,我们有两个可用注解:

  • @PersistJobDataAfterExecution:有状态的job。在执行过程中,每次执行定时任务都会创建一个新的JobDetail对象,其中的用于存储共享数据的Map集合也只会存储初始化的数据,如果每次定时任务中需要使用并修改里面的数据并保留修改结果,则需要添加此注解。
  • @DisallowConcurrentExecution:禁止并发访问同一个job定义。定时任务中有时可能出现以下情况——任务执行时间比周期时间更长,就是说上一次任务还没执行完就到了下一次任务的执行时间了,形成并发的局面。使用此注解可以让当前定时任务即使到时间后也要等待上一次任务完成才执行。

2.3配置类

我们现在有了Job类,现在我们要在一个配置类中提供JobDetail和Trigger并为三者绑定关系。
在定义jobDetail时可用使用usingJobData()方法来向其中的Map集合存入数据:
在这里插入图片描述
这里我们在提供Trigger对象时可以定义日期表达式,来决定任务执行的时间和频率。并且与依赖中提供的默认schedule绑定。
在这里插入图片描述
日期表达式是一个字符串,具体规则如下:
cron表达式
表达式格式(7个字段):秒 分 时 日 月 星期几 年,例如:0 0 13 24 1 ?2024
特殊符号
*可以理解为每的意思,每秒、每分、每天、每回、每年
?问号只能出现在日和星期这两个位置,表示这个位置的值不确定
-减号表示一个范围。例如:小时字段10-12,代表10到12点之间
,逗号表示一个列表。例如:星期字段1,3,5代表周一、周三、周五三天
/斜杠表示频率。例如:秒字段0/15就是从0秒开始,每隔15秒执行一次

接下来,我们已经有了job对象,jobdetail对象,trigger对象。
据一开始的介绍,我们的结构中应该还有一个调度器(Scheduler),这个对象并不要求一定要手动创建,spring中会默认提供一个调度器对象。后面要实现动态调度或者多任务执行时候才会自己手动创建调度器对象。
所以,至此,简单的定时任务的配置流程已经完成了。


总结

本文讲解了如何使用Quartz来开启一个简单的定时任务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云 ECS 服务器绑定多个公网IP

阿里云 ECS 服务器绑定多个公网IP 一、弹性公网IP绑定ECS服务器 单台ECS一般只能直接绑定一个弹性公网IP,但是可以绑定多张弹性网卡,如果把弹性公网IP绑定到弹性网卡上,那么单台ECS就能间接绑定多个弹性公网IP。但有的服务器系统镜像可能不…

线性代数考研笔记

行列式 背景 分子行列式:求哪个未知数,就把b1,b2放在对应的位置 分母行列式:系数对应写即可 全排列与逆序数 1 3 2:逆序数为1 奇排列 1 2 3:逆序数为0 偶排列 将 1 3 2 只需将3 2交换1次就可以还原原…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互…

数据库知识汇总2

一. 范式 定义:范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式; 一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一…

TP 钱包插件版本的使用

目前 TokenPocket 的几个平台中,以 ios 和 安卓版本最为常见,其实很少有人知道,浏览器上有一个插件版本的 Tp, 用电脑多的话,这也是一个挺好的选择。 最新版本现在支持Chrome、Brave 浏览器、Edge(Firefox及Opera正在…

反向传播算法的偏置更新步骤

偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…

(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?

在上一篇文章中,我们通过二次函数的例子,讲解了如何训练人工智能。今天,让我们进一步探讨:面对不同的实际问题,应该如何选择合适的函数形式? 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…

Vue3 中的插槽

Vue3 中插槽的使用&#xff0c;插槽是 Vue 中的一个特别特性&#xff0c;插槽就是模版内容。例如<h1>标题 1</h1>标题 1 就是插槽&#xff0c;Vue 是无法识别模板内容的&#xff0c;只能通过属性进行传递。Slot 主要包括默认、具名和作用域。Slot开发起来难度不大&…

单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好&#xff0c;没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…

靶机系列|VULNHUB|DC-3

描述 DC-3 是另一个专门建造的易受攻击实验室&#xff0c;旨在获得渗透测试领域的经验。 与之前的 DC 版本一样&#xff0c;这个版本的设计考虑到了初学者&#xff0c;尽管这一次只有一个标志、一个入口点&#xff0c;根本没有线索。 必须具备 Linux 技能和熟悉 Linux 命令行…

sqlserver sql转HTMM邮件发送

通过sql的形式&#xff0c;把表内数据通过邮件的形式发送出去 declare title varchar(100) DECLARE stat_date CHAR(10),create_time datetime SET stat_dateCONVERT(char(10),GETDATE(),120) SET create_timeDATEADD(MINUTE,-20,GETDATE()) DECLARE xml NVARCHAR (max) DECLAR…

MCU芯片是什么意思_有哪些作用?

MCU(Microcontroller Unit)芯片&#xff0c;即微控制单元&#xff0c;是一种集成了中央处理器(CPU)、存储器(ROM、RAM)以及各种外设接口(如输入输出引脚、定时器、串口等)的集成电路芯片。它通过超大规模集成电路技术&#xff0c;将具有数据处理能力的中央处理器、随机存储器、…

朱姆沃尔特隐身战舰:从失败到威慑

前言 "朱姆沃尔特"号驱逐舰是美国海军雄心勃勃的项目&#xff0c;旨在重塑未来海战。它融合了隐身、自动化和强大火力&#xff0c;然而由于技术问题和预算超支&#xff0c;原计划建造32艘的目标被大幅缩减&#xff0c;最终只建造了三艘。该舰的设计特点包括“穿浪逆船…

【虚拟机】VMware 16图文安装和配置 AlmaLinux OS 9.5 教程

准备工作 下载AlmaLinux ISO文件&#xff1a;从AlmaLinux官方网站&#xff08;https://almalinux.org/&#xff09;下载最新版本的ISO文件。 安装VMware Workstation&#xff1a;确保您的计算机上已安装VMware Workstation。&#xff08;注&#xff1a;我这边使用的是VMware16…

【论文阅读】SCGC : Self-supervised contrastive graph clustering

论文地址&#xff1a;SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址&#xff1a; https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器&#xff08;autoencoders&#xff09;结合图神经网…

如何利用Logo设计免费生成器创建专业级Logo

在当今的商业世界中&#xff0c;一个好的Logo是品牌身份的象征&#xff0c;它承载着公司的形象与理念。设计一个专业级的Logo不再需要花费大量的金钱和时间&#xff0c;尤其是当我们拥有Logo设计免费生成器这样的工具时。接下来&#xff0c;让我们深入探讨如何利用这些工具来创…

蓝桥杯-Python

1. 冒泡排序 算法步骤&#xff1a; 比较相邻元素&#xff0c;如果第一个大于第二个则交换从左往右遍历一遍&#xff0c;重复第一步&#xff0c;可以保证最大的元素在最后面重复上述操作&#xff0c;可以得到第二大、第三大、… n int(input()) a list(map(int, input()…

数据库实时会话管理,性能问题诊断后的临门一脚

目录 前言 实时会话管理 DBdoctor 实时会话功能 1.实时会话列表 2.结束会话 3.操作历史 4.SQL分析 结语 前言 在之前的文章中我们介绍了DBdoctor性能洞察功能&#xff0c;它能够快速量化数据库连接会话单条SQL的资源消耗&#xff0c;实现性能问题快速根因定位并给出优…

GBase 8s 数据库备份还原

每一天都是一个新的篇章&#xff0c;等待着你去书写属于自己的故事&#xff01;&#xff01;&#xff01; 一&#xff1a;备份 1.1.下载脚本文件&#xff0c;并上传到数据库服务器上相应目录。 解压后目录为&#xff1a; 说明&#xff1a; dbcomm.sh&#xff1a;导出注释脚本…

PHP框架+gatewayworker实现在线1对1聊天--发送消息(6)

文章目录 发送消息原理说明发送功能实现html部分javascript代码PHP代码 发送消息原理说明 接下来我们发送聊天的文本信息。点击发送按钮的时候&#xff0c;会自动将文本框里的内容发送出去。过程是我们将信息发送到服务器&#xff0c;服务器再转发给对方。文本框的id为msgcont…