专栏集锦,大佬们可以收藏以备不时之需:
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四个定时任务框架详细介绍
- Quartz
Quartz 是一款基于 Java 的开源调度框架,可以用于在指定时间执行任务或在指定时间隔断内重复执行任务。它提供了丰富的 API 和机动的设置选项,可以满足各种不同的调度需求。Quartz 支持集群摆设,可以实现任务的分布式调度。
优点:强盛的调度功能,支持集群摆设,提供丰富的 API 和机动的设置选项。
缺点:学习曲线较陡峭,设置相对复杂,没有自带的管理界面,调度逻辑和执行任务耦合在一起。
发展历史:Quartz 最初由 Netflix 开发,厥后成为了一个盛行的 Java 调度框架。
应用场景:Quartz 实用于需要举行复杂调度和分布式调度的场景,例如大数据处理、日记收集等。
官网和社区:Quartz 的官方网站为 https://github.com/quartz-scheduler/quartz,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决题目。
注意事项:在使用 Quartz 时,需要关注任务的并发题目,避免出现任务冲突。此外,在分布式场景下,需要确保任务在各个节点之间的数据一致性。
常见题目及解决方法:
- 题目:任务冲突导致任务无法正常执行。
解决方法:可以通过设置任务调度器的方式来避免任务冲突,例如设置任务的唯一性、设置任务的执行时间等。
- xxl-job
xxl-job 是一款国内开源的分布式任务调度平台,提供了任务调度、任务执行、任务监控、报警等功能,支持分布式摆设,实用于大规模分布式任务调度场景。xxl-job 提供了可视化界面举行操纵,可以集中化管理任务。
优点:支持集群摆设,提供运维界面,维护本钱小,自带错误预警,支持调度策略,支持分片,故障转移。
缺点:相对 Quartz 来说需要多摆设调度中心。
发展历史:xxl-job 最初由阿里巴巴集团开发,成为了一个盛行的 Java 调度框架。
应用场景:xxl-job 实用于需要举行分布式任务调度的场景,例如大规模分布式系统中的任务调度。
官网和社区:xxl-job 的官方网站为 https://github.com/xuxueli/xxl-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决题目。
注意事项:在使用 xxl-job 时,需要关注任务的并发题目,确保任务在分布式场景下的稳固性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
常见题目及解决方法:
- 题目:任务无法正常执行。
解决方法:可以通过查抄任务日记、分析任务依靠关系等方式来定位题目,并举行相应的修复。
- elastic-job
elastic-job 是一款国内开源的分布式任务调度框架,提供了分布式任务调度、分布式数据流处理、分布式数据分片等功能,支持多种任务范例,实用于大规模分布式任务调度和数据处理场景。
优点:支持集群摆设,维护本钱小。
缺点:没有自带的管理界面,学习曲线较陡峭。
发展历史:elastic-job 最初由阿里巴巴集团开发,成为了一个盛行的 Java 调度框架。
应用场景:elastic-job 实用于需要举行分布式任务调度和数据处理的场景,例如大数据处理。
官网和社区:elastic-job 的官方网站为 https://github.com/elasticjob/elastic-job,社区非常活跃,有大量的开发者和使用者在该社区中分享经验、提问和解决题目。
注意事项:在使用 elastic-job 时,需要关注任务的并发题目,确保任务在分布式场景下的稳固性。同时,要充分利用其提供的错误报警功能,及时发现并处理任务故障。
常见题目及解决方法:
- 题目:任务无法正常执行。
解决方法:可以通过查抄任务日记、分析任务依靠关系等方式来定位题目,并举行相应的修复。
- 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项目集成实战
- Quartz
Quartz 集成 Spring Boot 需要将 Quartz 作为 Spring Boot 的一个外部依靠引入。起首在 Maven 项目的 pom.xml 文件中添加 Quartz 的依靠:
org.quartz-scheduler quartz 2.3.2
然后在 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 {
- @Override
- public void execute(JobExecutionContext context) {
- // 作业执行逻辑
- }
- }
复制代码 末了,在 Spring Boot 的启动类上添加 @EnableScheduling 注解,例如:
- @SpringBootApplication
- @EnableScheduling
- public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码
- xxl-job
xxl-job 集成 Spring Boot 需要将 xxl-job 作为一个 Spring Boot 启动器引入。起首在 Maven 项目的 pom.xml 文件中添加 xxl-job 的依靠:
com.xxl-job xxl-job-spring-boot-starter 2.3.0
然后在 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 {
- @Override
- protected void executeInternal(JobExecutionContext context) {
- // 作业执行逻辑
- }
- }
复制代码 末了,在 Spring Boot 的启动类上添加 @EnableXxlJob 注解,例如:
- @SpringBootApplication
- @EnableXxlJob
- public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码
- elastic-job
elastic-job 集成 Spring Boot 需要将 elastic-job 作为一个 Spring Boot 启动器引入。起首在 Maven 项目的 pom.xml 文件中添加 elastic-job 的依靠:
org.apache.shiro elastic-job-lite-core 2.1.5
然后在 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 {
- @Override
- public void execute(JobExecutionContext context) {
- // 作业执行逻辑
- }
- }
复制代码 末了,在 Spring Boot 的启动类上添加 @EnableElasticJob 注解,例如:
- @SpringBootApplication
- @EnableElasticJob
- public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
复制代码
- 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 {
- @Override
- public 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 的详细介绍,每个框架都有相应的使用方法和注意事项,可以根据实际需求选择合适的框架举行使用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |