简介
在项目中我们经常会用到定时任务。本文介绍一些定时任务框架的区别。
一个好的定时任务中间件,必须要有以下功能:
- 有管理页面
- 易用性好
在实际项目中,90%都是用的XXL-JOB,因为它易用性最好。PowerJob虽然性能好,功能多,但不易用,实际项目并不需要那么高的性能!
定时任务中间件的对比
项 | 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的定时器,这三个就不写上了。这三者都没有前端页面,且不支持分布式(部署多个实例时只在一个实例上边执行定时任务)。
CRON
方案1:JDK自带
方案2:定时线程池
见:Java线程池-种类(Executors的用法) – 自学精灵
简介
用newSingleThreadScheduledExecutor();
方案3:Spring Task
Spring定时任务-@Scheduled注解-使用/教程/实例 – 自学精灵
方案4:Quartz
方案5:XXL-JOB
SpringBoot整合XXL-JOB-/实例 – 自学精灵
请先
!