原文网址:SpringBoot定时任务--选型/对比/框架_IT利刃出鞘的博客-CSDN博客
简介
在项目中我们经常会用到定时任务。本文介绍一些定时任务框架的区别。
项 | QuartZ | xxl-job | SchedulerX 2.0 | PowerJob |
易用性(推荐度) | ★ | ★★★★ | ★★ | ★★★ |
是否有前端页面 | 无 | 有 | 有 | 有 |
定时类型 | CRON | CRON | CRON、固定频率、固定延迟、OpenAPI | CRON、固定频率、固定延迟、OpenAPI |
支持的数据库 | 关系型数据库 (MySQL、Oracle...) | MySQL | 人民币(不开源) | 任意 Spring Data Jpa支持的关系型数据库(MySQL、Oracle...) |
报警监控 | 无 | 邮件 | 短信 | 邮件,提供接口允许开发者扩展 |
指定调度类型 | 不确定 | 支持 | 不确定 | 不支持 |
开发方式 | 略 | 便捷:Bean里的方法上加注解 | 略复杂:单个Bean实现PowerJob的指定接口。 | |
任务类型 | 内置Java | 内置Java、GLUE Java、Shell、Python等脚本 | 内置Java、外置Java(FatJar)、Shell、Python等脚本 | 内置Java、外置Java(容器)、Shell、Python等脚本 |
分布式任务 | 无 | 静态分片 | MapReduce 动态分片 | MapReduce 动态分片 |
在线任务治理 | 不支持 | 支持 | 支持 | 支持 |
日志白屏化 | 不支持 | 支持 | 不支持 | 支持 |
调度方式及性能 | 基于数据库锁 有性能瓶颈 | 基于数据库锁 有性能瓶颈 | 不详 | 无锁化设计,性能强劲无上限 |
DAG 工作流 | 不支持 | 不支持 | 支持 | 支持 |
Timer、定时线程池、Spring的定时器,这三个就不写上了。这三者都没有前端页面,且不支持分布式(部署多个实例时只在一个实例上边执行定时任务)。
在实际项目中,90%都是用的XXL-JOB,因为它易用性最好。PowerJob虽然性能好,功能多,但不易用,实际项目并不需要那么高的性能!
CRON
见:Cron(Crontab)--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
方案1:JDK自带
见:Java--Timer--使用/常用方法/实例_java timer循环_IT利刃出鞘的博客-CSDN博客
方案2:定时线程池
见:
Java线程池系列--线程池的种类(Executors的用法)_IT利刃出鞘的博客-CSDN博客
简介
可利用newSingleThreadScheduledExecutor();
方案3:Spring Task
Spring/SpringBoot--定时任务--@Scheduled注解--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
方案4:Quartz
Quartz--SpringBoot--整合/使用/用法/实例/示例_IT利刃出鞘的博客-CSDN博客
方案5:XXL-JOB
XXL-JOB--SpringBoot--使用/教程/实例_IT利刃出鞘的博客-CSDN博客