XXL-JOB
XXL-JOB
介绍
为了程序更具备健壮性,需要使用定时任务更新缓存
可以用来做定时任务的框架有很多,常见的有:
- SpringTask:单节点定时任务框架,只能用在单体项目中
- XXL-JOB:分布式定时任务框架,适用于单体项目和分布式项目
XXL-JOB是一个轻量级分布式任务调度平台,它的主要角色有两个:
- 调度中心:负责按照调度配置发出调度请求,主要职责为执行器管理、任务管理、监控运维、日志管理等
- 任务执行器:负责接收调度请求并执行任务逻辑;主要职责是执行任务、执行结果上报、日志服务等

安装
接下来根据官方提供的文档开始安装xxl-job:分布式任务调度平台XXL-JOB
使用
XXL-JOB的使用主要就是分为两步:
- 在代码端编写定时任务要执行的代码
- 在控制端配置代码的执行时机和其他信息
编写代码端
- 导入准备好的演示工程
- 准备好要执行的任务代码

- 修改配置文件

配置控制端
- 配置执行器:在任务调度中心,点击进入”执行器管理”界面,添加执行器
- AppName:执行器的唯一标识,不能重复
- 名称:执行的名称
- 注册方式:调度中心获取执行器地址的方式
- 机器地址:执行器的地址,当注册方式为手动时生效

配置任务:在调度中心新建任务,在任务管理->新建,填写以下内容
执行器:任务对应的执行器名称
调度类型:cron表达式,配置后面的表达式内容一起使用
JobHandler:任务执行器名称,需要对应到代码对任务代码上**@XxlJob注解**对应的名称

- 重启微服务,然后启动任务(或者选择执行一次),观察效果

配置说明
1)基础配置
执行器:任务绑定的执行器,任务触发调度时将会自动发现注册成功的执行器
任务描述:任务的描述信息,便于任务管理
负责人:任务的负责人
报警邮件:任务调度失败时邮件通知的邮箱地址,配置多个邮箱地址时用逗号分隔
2)调度配置
调度类型:
- CRON:该类型将会通过CRON,触发任务调度,配合后面的CRON属性使用
- 固定速度:该类型将会以固定速度,触发任务调度;按照固定的间隔时间,周期性触发
3)任务配置
- 运行模式:BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 “JobHandler” 属性使用
- JobHandler:运行模式为 “BEAN模式” 时生效,对应执行器中JobHandler类“@XxlJob”注解的value值
- 执行参数:任务执行所需的参数
4)高级配置
任务超时时间:任务运行多少秒还未结束,将会主动中断任务
失败重试次数:当任务失败时将会按照预设的失败重试次数主动进行重试
子任务:当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度
调度过期策略:由于某些原因导致任务在正常的调度时间没有执行,过期后的处理方案
- 忽略:忽略过期的任务,从当前时间开始重新计算下次触发时间
- 立即执行一次:立即执行一次,并从当前时间开始重新计算下次触发时间
阻塞处理策略:调度请求进入单机执行器后,发现执行器存在运行的调度任务时的处理策略
- 单机串行(默认):调度请求进入FIFO队列并以串行方式运行
- 丢弃后续调度:本次请求将会被丢弃并标记为失败
- 覆盖之前调度:终止运行中的调度任务并清空队列,然后运行本地调度任务
路由策略:当执行器集群部署时,路由策略将决定请求以何种方式分摊给各节点
- FIRST(第一个):固定选择第一个机器
- LAST(最后一个):固定选择最后一个机器
- ROUND(轮询):轮流选择每台机器
- RANDOM(随机):随机选择在线的机器
- CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器
- LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举
- LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举
- FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器被选举
- BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器被选举
- SHARDING_BROADCAST(分片广播):可根据分片参数分发任务
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Norlcyan's Blog!