定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战

专栏集锦,大佬们可以收藏以备不时之需:

Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9

Python 专栏:http://t.csdnimg.cn/hMwPR

Redis 专栏:http://t.csdnimg.cn/Qq0Xc

TensorFlow 专栏:http://t.csdnimg.cn/SOien

Logback 专栏:http://t.csdnimg.cn/UejSC

量子计算:

量子计算 | 解密著名量子算法Shor算法和Grover算法

AI机器学习实战:

AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析

AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别

Python实战:

Python实战 | 使用 Python 和 TensorFlow 构建卷积神经网络(CNN)进行人脸识别

Spring Cloud实战:

Spring Cloud实战 |分布式系统的流量控制、熔断降级组件Sentinel如何使用

Spring Cloud 实战 | 解密Feign底层原理,包含实战源码

Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

1024程序员节特辑文章:

1024程序员狂欢节特辑 | ELK+ 协同过滤算法构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

1024程序员节特辑 | ELK+ 用户画像构建个性化推荐引擎,智能实现“千人千面”

1024程序员节特辑 | OKR VS KPI谁更合适?

1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

Spring实战系列文章:

Spring实战 | Spring AOP核心秘笈之葵花宝典

Spring实战 | Spring IOC不能说的秘密?

国庆中秋特辑系列文章:

国庆中秋特辑(八)Spring Boot项目如何使用JPA

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

国庆中秋特辑(六)大学生常见30道宝藏编程面试题

国庆中秋特辑(五)MySQL如何性能调优?下篇

国庆中秋特辑(四)MySQL如何性能调优?上篇

国庆中秋特辑(三)使用生成对抗网络(GAN)生成具有节日氛围的画作,深度学习框架 TensorFlow 和 Keras 来实现

国庆中秋特辑(二)浪漫祝福方式 使用生成对抗网络(GAN)生成具有节日氛围的画作

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

在这里插入图片描述

目录

  • 1、Quartz、xxl-job、elastic-job、Cron四个定时任务框架详细介绍
  • 2、Quartz、xxl-job、elastic-job、Cron四个定时任务框架和Spring Boot项目集成实战

1、Quartz、xxl-job、elastic-job、Cron四个定时任务框架详细介绍

  1. Quartz
    Quartz 是一款基于 Java 的开源调度框架,可以用于在指定时间执行任务或在指定时间间隔内重复执行任务。它提供了丰富的 API 和灵活的配置选项,可以满足各种不同的调度需求。Quartz 支持集群部署,可以实现任务的分布式调度。
    优点:强大的调度功能,支持集群部署,提供丰富的 API 和灵活的配置选项。
    缺点:学习曲线较陡峭,配置相对复杂,没有自带的管理界面,调度逻辑和执行任务耦合在一起。
    发展历史:Quartz 最初由 Netflix 开发,后来成为了一个流行的 Java 调度框架。
    应用场景:Quartz 适用于需要进行复杂调度和分布式调度的场景,例如大数据处理、日志收集等。
    官网和社区:Quartz 的官方网站为 https://github.com/quartz-scheduler/quartz,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 Quartz 时,需要关注任务的并发问题,避免出现任务冲突。此外,在分布式场景下,需要确保任务在各个节点之间的数据一致性。
    常见问题及解决方法:
  • 问题:任务冲突导致任务无法正常执行。
    解决方法:可以通过设置任务调度器的方式来避免任务冲突,例如设置任务的唯一性、设置任务的执行时间等。
    在这里插入图片描述
  1. xxl-job
    xxl-job 是一款国内开源的分布式任务调度平台,提供了任务调度、任务执行、任务监控、报警等功能,支持分布式部署,适用于大规模分布式任务调度场景。xxl-job 提供了可视化界面进行操作,可以集中化管理任务。
    优点:支持集群部署,提供运维界面,维护成本小,自带错误预警,支持调度策略,支持分片,故障转移。
    缺点:相对 Quartz 来说需要多部署调度中心。
    发展历史:xxl-job 最初由阿里巴巴集团开发,成为了一个流行的 Java 调度框架。
    应用场景:xxl-job 适用于需要进行分布式任务调度的场景,例如大规模分布式系统中的任务调度。
    官网和社区:xxl-job 的官方网站为 https://github.com/xuxueli/xxl-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 xxl-job 时,需要关注任务的并发问题,确保任务在分布式场景下的稳定性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
    常见问题及解决方法:
  • 问题:任务无法正常执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。
    在这里插入图片描述
  1. elastic-job
    elastic-job 是一款国内开源的分布式任务调度框架,提供了分布式任务调度、分布式数据流处理、分布式数据分片等功能,支持多种任务类型,适用于大规模分布式任务调度和数据处理场景。
    优点:支持集群部署,维护成本小。
    缺点:没有自带的管理界面,学习曲线较陡峭。
    发展历史:elastic-job 最初由阿里巴巴集团开发,成为了一个流行的 Java 调度框架。
    应用场景:elastic-job 适用于需要进行分布式任务调度和数据处理的场景,例如大数据处理。
    官网和社区:elastic-job 的官方网站为 https://github.com/elasticjob/elastic-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 elastic-job 时,需要关注任务的并发问题,确保任务在分布式场景下的稳定性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
    在这里插入图片描述

常见问题及解决方法:

  • 问题:任务无法正常执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。
  1. Cron
    Cron 是一款基于 Java 的定时任务管理框架,可以将本地服务中所有的定时任务统一管理起来。使用简单,支持秒级别的定时任务。
    优点:使用简单,支持秒级别的定时任务。
    缺点:功能相对较少,仅适用于简单的定时任务调度。
    发展历史:Cron 最初由阿里巴巴集团开发,成为了一个流行的 Java 定时任务框架。
    应用场景:Cron 适用于需要进行简单定时任务调度的场景,例如定时统计报表、定时数据同步等。
    官网和社区:Cron 的官方网站为 https://github.com/apache/skywalking/tree/master/plugins/timelog,社区非常活跃,有大量的开发 者在该社区中分享经验、提问和解决问题。
    注意事项:在使用 Cron 时,需要关注任务的并发问题,避免出现任务冲突。同时,Cron 可能会受到其他应用程序或系统环境的影响,因此需要确保任务在执行过程中的稳定性。
    常见问题及解决方法:
  • 问题:任务冲突导致任务无法正常执行。
    解决方法:可以通过设置任务调度器的方式来避免任务冲突,例如设置任务的唯一性、设置任务的执行时间等。
  • 问题:任务执行失败或无法执行。
    解决方法:可以通过检查任务日志、分析任务依赖关系等方式来定位问题,并进行相应的修复。

2、Quartz、xxl-job、elastic-job、Cron四个定时任务框架和Spring Boot项目集成实战

  1. Quartz
    Quartz 集成 Spring Boot 需要将 Quartz 作为 Spring Boot 的一个外部依赖引入。首先在 Maven 项目的 pom.xml 文件中添加 Quartz 的依赖:
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 Quartz 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/quartz_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=quartz
spring.datasource.password=quartz
# 配置 Quartz 作业类
spring.quartz.job.class=com.example.Job
# 配置 Quartz 作业调度器
spring.quartz.job.properties.jobName=myJob
spring.quartz.job.properties.group=myGroup
spring.quartz.job.properties.cron=0/5 * * * * *
spring.quartz.job.properties.jobDataMap=@{}

接下来,创建一个继承自 QuartzJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements QuartzJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableScheduling 注解,例如:

@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. xxl-job
    xxl-job 集成 Spring Boot 需要将 xxl-job 作为一个 Spring Boot 启动器引入。首先在 Maven 项目的 pom.xml 文件中添加 xxl-job 的依赖:
<dependency><groupId>com.xxl-job</groupId><artifactId>xxl-job-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 xxl-job 调度器
spring.xxl.job.admin.address=localhost:8080
spring.xxl.job.core.executor.type=simple
spring.xxl.job.core.job.coalesce=true
spring.xxl.job.core.job.spring.cron=0/5 * * * * *
spring.xxl.job.core.job.spring.name=myJob
spring.xxl.job.core.job.spring.group=myGroup
spring.xxl.job.core.job.spring.timeout=30000

接下来,创建一个继承自 AbstractJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job extends AbstractJob {@Overrideprotected void executeInternal(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableXxlJob 注解,例如:

@SpringBootApplication
@EnableXxlJob
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. elastic-job
    elastic-job 集成 Spring Boot 需要将 elastic-job 作为一个 Spring Boot 启动器引入。首先在 Maven 项目的 pom.xml 文件中添加 elastic-job 的依赖:
<dependency><groupId>org.apache.shiro</groupId><artifactId>elastic-job-lite-core</artifactId><version>2.1.5</version>
</dependency>

然后在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:

# 配置 ElasticJob 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/elastic_job_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=elastic_job
spring.datasource.password=elastic_job
# 配置 ElasticJob 作业类
spring.elasticjob.job.class=com.example.Job
spring.elasticjob.job.name=myJob
spring.elasticjob.job.group=myGroup
spring.elasticjob.job.cron=0/5 * * * * *
spring.elasticjob.job.timeout=30000

接下来,创建一个继承自 ElasticJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements ElasticJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableElasticJob 注解,例如:

@SpringBootApplication
@EnableElasticJob
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
  1. Cron
    Cron 集成 Spring Boot 非常简单,只需要在 Spring Boot 项目的 application.properties 文件中添加相关的配置,例如:
# 配置 Cron 数据源
spring.datasource.url=jdbc:mysql://localhost:3306/cron_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=cron
spring.datasource.password=cron
# 配置 Cron 作业类
spring.cron.job.class=com.example.Job
# 配置 Cron 作业调度器
spring.cron.job.spring.cron=0/5 * * * * *
spring.cron.job.spring.name=myJob
spring.cron.job.spring.group=myGroup

接下来,创建一个继承自 CronJob 的作业类,并实现 execute 方法,例如:

@Component
public class Job implements CronJob {@Overridepublic void execute(JobExecutionContext context) {// 作业执行逻辑}
}

最后,在 Spring Boot 的启动类上添加 @EnableScheduling 注解,例如:

@SpringBootApplication
@EnableScheduling
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

以上就是 Quartz、xxl-job、elastic-job、Cron 四个定时任务框架如何集成到 Spring Boot 的详细介绍,每个框架都有相应的使用方法和注意事项,可以根据实际需求选择合适的框架进行使用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端canvas的基础使用

一、介绍 前端中的 Canvas 是一种用于在网页上绘制图形的 HTML 元素。它提供了一个可以通过 JavaScript 进行绘制的 2D 绘图环境。使用 Canvas&#xff0c;您可以绘制图形&#xff0c;包括线条、矩形、圆形、文本和图像。Canvas 为开发人员提供了灵活自由的绘图能力&#xff0…

C++基础 -42- STL库之list链表

———————STL库之list链表——————— &#x1f384; list链表的格式(需要定义头文件) list<int> data1(4, 100);list<int> data2(4, 500);&#x1f384;list链表的合并接口 &#x1f384;举例使用合并接口并且验证 data2.merge(data1);list<int>::…

面试题之Docker篇

1、Docker 是什么&#xff1f; Docker一个开源的应用容器引擎&#xff0c;是实现容器技术的一种工具&#xff0c;让开发者可以打包他们的应用以及环境到一个镜像中&#xff0c;可以快速的发布到任何流行的操作系统上。 2、Docker的三大核心是什么? 镜像&#xff1a;Docker的镜…

AI洗稿软件,当下热门的AI洗稿软件大全【2024】

在如今信息爆炸的时代&#xff0c;文章创作成为越来越多人面临的任务之一。为了满足用户对高效、原创、多样化内容的需求&#xff0c;人工智能技术在洗稿领域得到了广泛应用。本文将专心分享AI洗稿领域的优质推荐。 AI洗稿的背景与应用 AI洗稿是指利用人工智能技术对现有文章进…

虹科Pico汽车示波器 | 汽车免拆检修 | 2018款东风风神AX7车发动机怠速抖动、加速无力

一、故障现象 一辆2018款东风风神AX7车&#xff0c;搭载10UF01发动机&#xff0c;累计行驶里程约为5.3万km。该车因发动机怠速抖动、加速无力及发动机故障灯异常点亮而进厂维修&#xff0c;维修人员用故障检测仪检测&#xff0c;提示气缸3失火&#xff1b;与其他气缸对调点火线…

ChatGPT在国内的使用限制,国内的ChatGPT替代工具

人工智能技术的发展不仅改变了我们的生活方式&#xff0c;也在各行各业发挥着越来越重要的作用。ChatGPT&#xff08;Generative Pre-trained Transformer&#xff09;作为一种先进的自然语言处理模型&#xff0c;由OpenAI推出&#xff0c;其在生成人类般流畅对话方面表现出色。…

互联网加竞赛 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

Java一对一聊天程序

我们首先要完成服务端&#xff0c;不然出错&#xff0c;运行也要先运行服务端&#xff0c;如果不先连接服务端&#xff0c;就不监听&#xff0c;那客户端不知道连接谁 服务端 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.Actio…

数据结构——二叉树的链式结构

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ 一、二叉树的创建 这里我们使用先序遍历的思想来创建二叉树&#xff0c;这里的内容对于刚接触二…

TinyMPC - CMU (卡耐基梅隆大学)开源的机器人 MPC 控制器

系列文章目录 CasADi - 最优控制开源 Python/MATLAB 库 文章目录 系列文章目录前言一、机器人硬件对比1.1 Teensy 上的微控制器基准测试1.2 机器人硬件1.3 BibTeX 二、求解器三、功能&#xff08;预期&#xff09;3.1 高效3.2 鲁棒3.3 可嵌入式3.4 最小依赖性3.5 高效热启动3.…

【Linux系统编程】开发工具yum和vim

目录 一&#xff0c;yum工具的使用 1&#xff0c;yum的介绍 2&#xff0c;yum的使用 二&#xff0c;vim工具的开发 1&#xff0c;vim的介绍 2&#xff0c;模式的使用 3&#xff0c;vim配置文件 4&#xff0c;sudo配置文件 一&#xff0c;yum工具的使用 1&#xff0c;y…

BGP综合

1、使用PreVal策略&#xff0c;确保R4通过R2到达192.168.10.0/24。 2、使用AS_Path策略&#xff0c;确保R4迪过R3到达192.168.11.0/24。 3、配置MED策略&#xff0c;确保R4通过R3到达192.168.12.0/24。 4、使用Local Preference策略&#xff0c;确保R1通过R2到达192.168.1.0…

html动漫网页设计分享 紫罗兰永恒花园网页作业成品带视频,注册登录,表格,表单

html5静态网页设计要是用HTML DIVCSS JS等来完成页面的排版设计,一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点&#xff0c;学生网页作业源码可以…

五、HotSpot细节实现

一、并发标记与三色标记 问题&#xff1a;三色标记到底发生在什么阶段&#xff0c;替代了什么。并发标记 1、并发标记( Concurrent Marking) 从 GC Root 开始对堆中对象进行可达性分析&#xff0c;递归扫描整个堆里的对象图&#xff0c;找出要回收的对象&#xff0c;这阶段耗…

回归预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络

效果一览 基本介绍 提出一种同时考虑时间与空间因素的卷积&#xff0d;双向长短期记忆&#xff08; CNN-BiLSTM&#xff09;模型&#xff0c;将具有空间局部特征提取能力的卷积神经网络&#xff08;CNN&#xff09;和具有能同时考虑前后方向长时间信息的双向长短期记忆&#xf…

PHP 二维码内容解析、二维码识别

目录 1.首先是一些错误的示例 2.正确示例 3.二维码解析 4.完整示例&#xff0c;含生成 5.代码执行结果 6.参考文档 1.首先是一些错误的示例 本示例使用的是php7.3 通过搜索各种结果逐个尝试以后&#xff0c;得出一个可使用版本 解析错误经历&#xff1a;vendor核心报错 …

springboot 极简案例

安装idea File -> New Project 选择依赖 创建controller文件 输入controller类名 输入代码 运行项目 访问 localhost:8080/hello/boot package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.…

WordCount 源码解析 Mapper,Reducer,Driver

创建包 com.nefu.mapreduce.wordcount &#xff0c;开始编写 Mapper &#xff0c; Reducer &#xff0c; Driver 用户编写的程序分成三个部分&#xff1a; Mapper 、 Reducer 和 Driver 。 &#xff08; 1 &#xff09; Mapper 阶段 ➢ 用户自定义的 Mapper 要继承自己的父…

Java最全面试题专题---1、Java基础知识(3)

IO流 java 中 IO 流分为几种? 按照流的流向分&#xff0c;可以分为输入流和输出流&#xff1b;按照操作单元划分&#xff0c;可以划分为字节流和字符流&#xff1b;按照流的角色划分为节点流和处理流。 Java Io流共涉及40多个类&#xff0c;这些类看上去很杂乱&#xff0c;…

【uC/OS-II】

uC/OS-II 1. uC/OS-II1.1 代码组成1.2 任务基本概念1.3 任务控制块![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/23fe7cd390b94b7eb06a110b10165d22.png)1.4 任务的状态与切换1.5 任务创建的代码 2 任务2.1 系统任务2.2 任务管理相关函数2.3 任务基本属性2.4 uC/…