N

Norlcayn的博客

A text-focused Halo theme

  • 首页
  • 文章
  • 默认分类
  • 关于
主页 XXL-JOB
文章

XXL-JOB

发表于 2026-01-16 更新于 昨天
作者 Administrator
9~11 分钟 阅读

介绍

为了程序更具备健壮性,需要使用定时任务更新缓存

可以用来做定时任务的框架有很多,常见的有:

  • SpringTask:单节点定时任务框架,只能用在单体项目中
  • XXL-JOB:分布式定时任务框架,适用于单体项目和分布式项目

XXL-JOB是一个轻量级分布式任务调度平台,它的主要角色有两个:

  • 调度中心:负责按照调度配置发出调度请求,主要职责为执行器管理、任务管理、监控运维、日志管理等
  • 任务执行器:负责接收调度请求并执行任务逻辑;主要职责是执行任务、执行结果上报、日志服务等

ea632ca4-966d-443e-a9f7-d81d1bf71133

安装

接下来根据官方提供的文档开始安装xxl-job:分布式任务调度平台XXL-JOB

使用

XXL-JOB的使用主要就是分为两步:

  1. 在代码端编写定时任务要执行的代码
  2. 在控制端配置代码的执行时机和其他信息

编写代码端

  1. 导入准备好的演示工程
  2. 准备好要执行的任务代码

4462ecf5-2ccc-45e8-86df-8ce57b361fb2

  1. 修改配置文件

8df1f909-affb-4272-bee4-a1d5a8409949

配置控制端

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

dbea4b75-aeb0-41cb-ad8e-f726cab55c6b

  1. 配置任务:在调度中心新建任务,在任务管理->新建,填写以下内容

  2. 执行器:任务对应的执行器名称

  3. 调度类型:cron表达式,配置后面的表达式内容一起使用
  4. JobHandler:任务执行器名称,需要对应到代码对任务代码上**@XxlJob注解**对应的名称

329a982f-b968-48ed-a9e8-1db8506797b5

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

593fcf00-2115-4389-b4d4-216be7eebab7

配置说明

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 4.0
分享

相关文章

1月 16, 2026

状态机

什么是状态机 需求说明 在订单模块中订单共设计了7种状态,如下图 订单会在多个状态间进行转换,这就需要开发人员都去记忆这些转换关系,这是非常麻烦的 if(订单状态 == 待支付){ //如果用户支付成功,执行此场景下的业务逻辑,更新订单状态为派单中 update(id,派单中) ) if(

1月 16, 2026

数据表设计规范

设计范式 数据库设计三范式: 第一范式:数据表中的每一列都是原子的,不可再拆分 第二范式:每张表中的一条记录只描述一个实体 第三范式:数据表中不要存在冗余字段(可以通过其他字段推导出的字段) 1)第一范式:数据表中的每一列都是原子的,不可再拆分 有一张用户考勤表设计如下 id 用户名 考勤时间 1

1月 16, 2026

缓存优化

针对系统中访问频率很高的页面,常见的优化方案如下: 将页面做页面静态化处理 如果静态化之后依旧无法满足需求,可以将静态资源转移到CDN服务器 页面上变动的内容可以异步请求后端服务器获取数据,后端可以添加缓存来减轻数据库的压力 数据库方面可以通过合理的存储引擎选择、表字段设计、索引设计等进一步提高查询

下一篇

EasyExcel(报表导出)

上一篇

Jmeter快速入门

最近更新

  • Hello Halo
  • 状态机
  • 数据表设计规范
  • 缓存优化
  • 事务失效

热门标签

Halo 异常处理 Redisson 并行 Vue 并发 递归 请求限流 SpringAMQP 类加载器

目录

©2026 Norlcayn的博客. 保留部分权利。

使用 Halo 主题 Chirpy