SpringBoot定时任务--选型/对比/框架
原文网址: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博客
方案6:PowerJob
PowerJob--SpringBoot--使用/教程/实例_IT利刃出鞘的博客-CSDN博客