Xxl-Job学习笔记
Xxl-Job学习笔记
原创 已于 2025-03-14 16:19:45 修改 · 粉丝可见 · 1.2k 阅读 · 13 · 11 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/146242719
目录
[TOC]
概述
XXL-Job 是一个轻量级、分布式任务调度平台,由国内技术团队开发并开源。它旨在解决分布式系统中的定时任务调度问题,提供了一整套简单、高效且可靠的解决方案
核心架构
XXL-Job的架构主要由以下几部分组成:
调度中心(Admin) :负责任务的管理、调度策略、触发时机以及调度请求的发起。它提供了可视化的 Web 管理界面,方便用户进行任务的增删改查和调度监控。
执行器(Executor) :部署在业务服务环境中,用于接收调度中心的请求并执行具体的任务逻辑
任务代码 :由开发者编写的业务逻辑代码,注册到执行器中,由调度中心触发执行
核心特点
轻量级设计 :核心代码简洁高效,易于集成和部署
分布式调度 :支持多机分布式部署,可水平扩展,提高系统可用性和负载能力
简单易用 :提供简洁的 API 和可视化界面,便于任务的创建、管理和监控
功能丰富 :支持多种任务类型(如定时任务、周期任务、一次性任务),并提供任务分片、失败重试、任务依赖等功能
弹性扩缩容 :支持动态添加或移除执行器节点,无需停止服务
高可用性 :通过多节点部署和故障转移机制,确保任务的不中断执行
应用场景
XXL-Job 广泛应用于以下场景:
定时任务 :如数据备份、报表生成、系统维护等
分布式任务处理 :支持任务分片并行执行,提高任务处理效率
弹性扩缩容 :根据业务量动态调整执行器数量,应对业务波动
业务流程自动化 :实现复杂业务流程的自动化调度
什么是任务调度
我们可以思考一下下面业务场景的解决方案:
某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券
某银行系统需要在信用卡到期还款日的前三天进行短信提醒
某财务系统需要在每天凌晨0:10分结算前一天的财务数据,统计汇总
以上场景就是任务调度所需要解决的问题。
任务调度是为了自动完成特定任务,在约定的特定时刻去执行任务的过程。
快速入门
官网: 分布式任务调度平台XXL-JOB
获取源码
| 源码仓库地址 |
|---|
| https://github.com/xuxueli/xxl-job |
| xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 |
| GitCode - 全球开发者的开源社区,开源代码托管平台 |
获取源码解压即可
初始化调度数据库
打开项目我们可以获取到 调度数据库 ,路径为: xxl-job-master/doc/db/tables_xxl_job.sql

使用 数据库连接工具初始化运行即可。
基本配置
数据源datasource
随后打开使用 xxl-job-admin 模块,这个模块就是用于管理我们的调度。并修改我们数据相关配置:

邮箱email(可选)
email 的相关配置,就是 当我们调度执行失败的时候,可以通过 email 进行通知。具体email 的配置,通过个人的邮箱平台相关配置即可。

会话令牌accesstoken
执行器 连接 调度中心 所需要的令牌。

启动调度中心
启动 admin 模块
调度中心访问地址: http://localhost:8080/xxl\-job\-admin
默认登录账号“admin/123456”,登录后运行界面如下图所示

启动执行器
打开你自己的项目,并进行相关配置。
依赖
1 | |
yaml基本配置
1 | |
XxlJobConfig类配置
1 | |
随后启动我们自己的项目。

同时查看执行器管理器

可以发现远程注册端口节点成功。
定义执行任务
添加执行任务

1 | |
尝试执行一次。


通过我们执行一次成功后并调用对应方法,即可。可以根据我们自己需求进行启动配置对应的方法了。
初级阶段
有时候我们需要的是,用户使用自己的前端去设置触发的时间。并不是我们去xxl-job-admin 的管理端进行添加定时任务的。
时间转为Cron表达式工具类
以下是我收集的所用到的工具类。可以参考一下。
1 | |
XxlJobRemoteApiUtils工具类
转完 Cron 表达式后,我们可以通过远程调用xxl-job-admin 的对应接口进行操作添加。
引入远程发送请求依赖
1 | |
以下是我收集并使用的工具类,可以做一下参考。
1 | |
允许远程调用
通过二次开发xxl-job-admin,允许远程调用,修改方法如下:

通过发送请求并,走的流程,可以直到调用接口的时候是通过请求参数中的 XXL_JOB_LOGIN_IDENTITY 进行校验, 我们可以通过当我们发送的请求参数,直接获取即可cookieToken,即可。
PS:由于博主已经实验成功过了,具体方法,大家可以参考参考即可。博主就不走结果啦。
觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭
wechat pay
ali pay