定时任务之Springboot整合Quartz详解

news2024/11/23 9:08:35

文章目录

    • 一、什么是Quartz
    • 二、为什么使用Quartz
      • 1、为什么要用定时任务
      • 2、为什么使用Quartz
    • 三、常见开源定时任务的框架的异同
    • 四、Quartz的相关概念
    • 五、Quartz的使用(此处讲解使用主要流程)
    • 六、开源引擎框架与业务如何结合使用

一、什么是Quartz

quartz是一个定时调度的框架,指定时间内触发执行某个动作;它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。

二、为什么使用Quartz

1、为什么要用定时任务

1)无需手动触发 :无需页面(人工)触发动作;
2)执行时间准确:会在准确的时间内进行业务处理;
3)低耦合:单独为一个动作体,可以自行开关,不影响其他业务功能;

2、为什么使用Quartz

1)目前公司使用较多的定时任务框架为xxl-Job,elastic-Job,此框架都是基于Quartz进行二次开发;
2)有些传统互联网公司定时任务框架还是使用Quartz

三、常见开源定时任务的框架的异同

在这里插入图片描述

四、Quartz的相关概念

Quartz 的核心类有以下三部分:
1)任务 Job : 需要实现的任务类,实现 execute() 方法,执行后完成任务;
2)触发器 Trigger : 包括 SimpleTrigger 和 CronTrigger;
3)调度器 Scheduler :任务调度器,负责基于 Trigger触发器,来执行 Job任务

五、Quartz的使用(此处讲解使用主要流程)

1、初始化Quartz的脚本sql
2、编写定时任务执行类DataHandler并继承QuartzJobBean,实现executeInternal方法(与业务结合)

六、开源引擎框架与业务如何结合使用

总结:
常见引擎框架:定时任务框架quartz、规则引擎drools、流程引擎acitiviti等与业务结合的时候,需要在指定的步骤中对业务表进行操作,就可以实现将所需要的信息存入到业务表中,后续把相应的业务表信息与引擎表信息关联就可。例如下方是定时任务执行是的类(需要集成QuartzJobBean)可以进行业务的操作。

/**
 * @date 2023/7/11
 * 定时任务实现类
 */
@Slf4j
public class DataHandler extends QuartzJobBean {

    @Autowired
    private IDataLogService dataLogService;


    // 定时任务执行的类
    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        // 1、context对象可以获取任务id等信息
        // 2、业务操作(比如操作业务表,进行采集任务后,再次更新业务表的采集状态)
        dataLogService.update();
        ...
    }
}

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

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

相关文章

springboot通过springdata整合es7.x

首先要明确通过springdata操作es必须要将版本号和es的版本号对应上,否则会报错(倒不用完全一一对应,但版本号最好不要相差太多)。springdata引入的版本号由springboot的版本号决定,对应关系如下: 这里我用…

一起来学习怎样将文档翻译成中文的同时维持原有格式

在快节奏的现代生活中,文档翻译软件成为我们处理多语言文本的得力工具。然而,当我们使用文档翻译软件时,有时会面临一个头疼的问题:即使翻译出了准确的词句,但格式却完全没有保留下来。这时候,我们怎么办呢…

常见OOM异常分析排查

常见OOM异常分析排查 Java内存溢出Java堆溢出原因解决思路总结 Java内存溢出 java堆用于存储对象实例,如果不断地创建对象,并且保证GC Root到对象之间有可达路径,垃圾回收机制就不会清理这些对象,对象数量达到最大堆的容量限制后就会产生内存溢出异常. Java堆溢出原因 无法在…

mysql月统计数据,没有的填充为0

要按时间戳字段按月份分组查询记录表,可以使用DATE_FORMAT函数将时间戳字段格式化为年月格式,然后将结果按照该字段进行分组。 SELECT a.month month,ifnull(b.count, 0) count FROM (SELECT 1 month UNION ALL SELECT 2 month UNION ALL SELECT 3 mont…

为何企业和开发团队应该重视进行兼容性测试

随着科技的不断进步和软件的广泛应用,保证软件在不同平台和环境下正常运行变得至关重要。本文将探讨软件兼容性测试的重要性和好处,并介绍为何企业和开发团队应该重视进行兼容性测试,以确保软件的稳定性和用户体验。 提供用户友好的体验 软件…

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

先阐述一下我的业务场景,我有一个iOS的app sdk项目,下面简称 A ,以及运行 A 的 app 项目,简称 A demo 。 引用关系为 A demo 引用了 A ,而 A 引用了 ffmpeg 的静态库(.a文件)。此时业务出现了 b…

线程、进程和管程

一、线程 1.1 定义 线程:线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程有时被称为轻量级进程,是程序执行流的最小单元。 线程的组成部分: 1. 线程ID:线程标识符 2. 当前…

【python】python求解矩阵的转置(详细讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

Linux服务器安装JDK20

一、下载安装包 访问官网,找到JDK20,复制下载链接 我复制的链接是:JDK20 二、Linux服务器操作 1.服务器根目录下创建一个新的文件夹 cd /mkdir jdkscd /jdks2.将下载好的jdk-20上传到jdks下 3.解压缩 tar -zxvf jdk-20_linux-x64_bin.tar…

ClickHouse目录结构

默认安装路径:/var/lib/clickhouse/ 目录结构: 主要介绍metadata和data metadata 其中的default、system及相应的数据库,.sql文件即数据库创建相关sql语句 进入default数据库(默认数据库): 可以看到数据库…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业 tbms

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批&…

明星广告代言指南:遵循行业规范保持诚信

明星广告代言是一种常见的市场营销策略,通过邀请知名明星为品牌或产品代言,以增加品牌曝光和销售额。媒介拥有的3000多位一二线明星的合作资源,包括演员、歌手、主持人等各种类型的明星,可以为企业提供签售会、产品发布会、品牌推…

手写一个锁其实也很easy

懵逼的状态: 面试中经常被问到,如何手写一个锁,很多时候一脸懵逼,不知所措,多少年前深有体会,然而回过头来细细分析,只需使用AtomicReference类 即可以轻松搞定。首先咱们先来了解一下Atomi…

6.s081/6.1810(Fall 2022)Lab2: System calls

文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)简单分析Hint 1Hint 2Hint 3Hint 4Hint 5测试 2. Sysinfo (moderate)声明实现框架用户态与内核态交互计算空闲内存的大小计算非UNUSED进程的数量 测试 3. 总测试 前言 这个lab主要介绍了用户态到内…

【Java】Map<String,Object>中解析Object类型数据为数组格式(94)

背景&#xff1a; 前端&#xff1a;入参为字符串和数组类型&#xff1b;通过json字符串传给后台&#xff0c; 后台&#xff1a;后台通过工具解析为Map<String&#xff0c;Object>&#xff0c;然后需要解析出Map里面的数组值做操作&#xff1b; 需求&#xff1a; 入参&…

Vue源码学习 - 模版编译 和 组件渲染/更新过程

目录 前言一、什么是 模板编译&#xff1f;二、模板编译 到 render 函数字符串的流程三、深入模板编译源码baseCompile ()parse() - 解析阶段optimize() - 优化阶段generate() - 生成阶段&#xff08;1&#xff09;了解 render函数字符串 和 with 语法&#xff08;2&#xff09…

PHP手术麻醉信息系统的功能作用

手术麻醉信息系统源码 手术麻醉信息系统的使用&#xff0c;很大程度上方便了麻醉科医生的日常工作&#xff0c;使麻醉工作流程更规范&#xff0c;为麻醉医生工作提供了一个新平台。下面简述一下该系统在日常麻醉工作中的作用。 (一) 及时合理地安排手术 麻醉信息系统与医院现…

初识C++:类与对象

前言&#xff08;类的引入&#xff09; C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。比如&#xff1a; 之前在C语言中&#xff0c;用C语言方式实现的栈&#xff0c;结构体中只能定义变量&#xff1b;现在以C方…

【第一阶段】编译时常量

1.编译时常量只能是常用的基本数据类型 String Double Int Float Long Short Byte Char Boolean 2.const用于定义编译时常量类似final,如果我们用在局部变量中将会报错&#xff0c;代码示例 fun main() {//使用const修饰为常量,编译时常量只能是常用的基本数据类型 String Dou…

学习C语言第三天 :分支语句(if - else if - else)

1.C语言语句结构 C语言是结构化的程序设计语言&#xff0c;这里的结构指的是顺序结构、选择结构、循环结构&#xff0c;C语言是能够实现这三种结构的&#xff0c;其实我们如果仔细分析&#xff0c;我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。 我们可以使用…