XXL-JOB v3.3.0 | 分布式任务调度平台

news/2025/11/29 3:14:58/文章来源:https://www.cnblogs.com/xuxueli/p/19284637

XXL-JOB 正在角逐 “2025 年度Gitee最受欢迎的开源软件”,期待您投出宝贵一票,你的认可对我们很重要🌹~

  • 投票链接👉:https://gitee.com/activity/2025opensource?ident=ISLBOH

Release Notes

  • 1、【新增】执行器新增“任务扫描排除路径”配置项(xxl.job.executor.excludedpackage),任务扫描时忽略指定包路径下的任务;
  • 2、【优化】执行器任务Bean扫描逻辑调整,优化懒加载Bean检测及过滤机制,避免提前初始化类问题;
  • 3、【新增】合并PR-3840,执行器支持通过XxlJobHelper获取任务触发时间戳;XxlJobHelper组件完善,支持通过“XxlJobHelper.getLogId/getLogDateTime/getLogFileName”方法获取执行日志相关信息;
  • 4、【升级】调度中心UI框架升级,统一交互组件,支持多主题、多标签与局部渲染等,升级UI组件及性能;
  • 5、【优化】调度时间轮组件强化,保障不重不漏:调度时间轮单刻度数据去重,避免极端情况下任务重复执行;时间轮转动时校验临近刻度,避免极端情况下遗漏刻度;
  • 6、【优化】调度任务锁逻辑优化,事务SQL下沉至Mapper层统一管理,并增加测试用例,提升代码可读性以及可维护性;
  • 7、【优化】调度快慢线程池默认配置上调,提升默认配置单机负载;调度预读任务数计算系数下调,降低事务颗粒度,提升性能及稳定性;
  • 8、【性能】调度中心调整资源加载逻辑,移除不必要的拦截器,提升页面加载性能;
  • 9、【优化】优化日志列表页面展示逻辑,新增展示“日志ID”与“任务名称”信息;
  • 10、【优化】报表统计SQL优化,修复小概率情况下查询null值问题;报表初始化SQL优化,修复小概率情况增改竞争问题;
  • 11、【优化】优日志报告与清理逻辑,增加清理过期日志的异常捕获,避免线程异常退出;
  • 12、【优化】任务回调失败日志读写磁盘逻辑优化,解决极端情况下大文件读写内存问题;
  • 13、【升级】Http通讯组件升级,基于接口代理方式重构通讯组件,提升组件性能及扩展性;
  • 14、【重构】规范API交互协议,通用响应结构体调整为Response,调度中心API统一为Response封装数据;
    (注意:响应结构体从ReturnT升级为Response,其中属性值“content”会调整为“data”,通过openapi交互场景需要关注)
  • 15、【重构】调度过期策略、调度类型策略逻辑重构,代码组件化拆分并完善日志,提升健壮性及可维护性;
  • 16、【重构】调度中心底层组件重构,组件初始化以及销毁逻辑统一处理,任务触发及和回调逻辑优化,避免资源泄漏风险;
  • 17、【重构】调度中心底层组件模块化拆分,移除组件单例以及静态代码逻辑,提升组件可维护性;
  • 18、【重构】重构Rolling日志读写逻辑,解决边界条件下异常情况,优化读写性能;
  • 19、【修复】脚本任务process销毁逻辑优化,解决风险情况下脚本进程无法终止问题;
  • 20、【修复】合并PR-2369,修复脚本任务参数取值问题;
  • 21、【新增】任务审计日志,记录任务操作敏感日志信息,如任务新建/更新/删除/启停/触发以及GLUE代码更新等,用于系统监控、审计和安全分析,可快速追溯异常行为以及定位排查问题等。
    (当前任务审计日志以Info级别输出在系统日志中,可通过关键词 "xxl-job operation log:" 检索过滤)
  • 22、【强化】通用HTTP任务(httpJobHandler)强化,支持更丰富请求参数设置,完整参数示例如下:
完整参数示例参考:
```
{"url": "http://www.baidu.com","method": "POST","contentType": "application/json","headers": {"header01": "value01"},"cookies": {"cookie01": "value01"},"timeout": 3000,"data": "request body data","form": {"key01": "value01"},"auth": "auth data"
}
```
  • 23、【优化】调度组件日志完善,提升边界情况下问题定位效率;
  • 24、【升级】升级多项maven依赖至较新版本,如 netty、groovy、springboot、spring-ai、dify、mybatis、xxl-sso 等;

备注:

  • a、本次升级数据模型向前兼容,v3.2.*版本可直接升级不需要进行数据库表调整;
  • b、本次升级针对客户端rollinglog依赖字段做规范约束,如不关注该功能 v2.4.* 及后续版本客户端不需要升级/可兼容,否则需要升级客户端版本;

“AI任务”接入示例

此处以 difyWorkflowJobHandler 为例,注意需要前置部署AI执行器(xxl-job-executor-sample-ai),可参考官方文档说明。

步骤一:调度中心,新建 difyWorkflowJobHandler 任务

在这里插入图片描述

步骤二:任务执行,查看任务进度及日志

在这里插入图片描述

“常规任务”接入示例

XXL-JOB支持多模式任务,下文以简单的“Bean模式任务”为例介绍,三步快速开发接入。

步骤一:执行器,开发Job方法
@XxlJob("demoJobHandler")public void demoJobHandler() throws Exception {XxlJobHelper.log("XXL-JOB, Hello World.");
}

步骤二:调度中心,新建调度任务

img_ZAsz.png

步骤三:任务执行,查看任务进度及日志

img_eYrv.png

简介

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

  • 中文文档:http://www.xuxueli.com/xxl-job/
  • 社区交流:http://www.xuxueli.com/page/community.html

img_Qohm.png

特性

  • 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  • 2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
  • 3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;
  • 4、执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;
  • 5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
  • 6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
  • 7、触发策略:提供丰富的任务触发策略,包括:Cron触发、固定间隔触发、固定延时触发、API(事件)触发、人工触发、父子任务触发;
  • 8、调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿触发一次等;
  • 9、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
  • 10、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  • 11、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
  • 12、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;
  • 13、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
  • 14、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
  • 15、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
  • 16、故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。
  • 17、任务进度监控:支持实时监控任务进度;
  • 18、Rolling实时日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志;
  • 19、GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。
  • 20、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
  • 21、命令行任务:原生提供通用命令行任务Handler(Bean任务,"CommandJobHandler");业务方只需要提供命令行即可;
  • 22、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
  • 23、一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
  • 24、自定义任务参数:支持在线配置调度任务入参,即时生效;
  • 25、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
  • 26、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
  • 27、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
  • 28、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
  • 29、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
  • 30、全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
  • 31、跨语言/OpenAPI:调度中心与执行器提供语言无关的 OpenApi(RESTful 格式),第三方任意语言可据此对接调度中心或者实现执行器,实现多语言支持。除此之外,还提供了 “多任务模式”和“httpJobHandler”等其他跨语言方案;
  • 32、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文;
  • 33、容器化:提供官方docker镜像,并实时更新推送dockerhub,进一步实现产品开箱即用;
  • 34、线程池隔离:调度线程池进行隔离拆分,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性;
  • 35、用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;
  • 36、权限控制:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;
  • 37、AI任务:原生提供AI执行器,并内置多个AI任务Handler,与spring-ai、ollama、dify等集成打通,支持快速开发AI类任务。
  • 38、审计日志:记录任务操作敏感信息,用于系统监控、审计和安全分析,可快速追溯异常行为以及定位排查问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/980245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么在Prompt优化中用CoT(思维链)

为什么在Prompt优化中用CoT(思维链)Posted on 2025-11-29 03:01 Java后端的Ai之路 阅读(0) 评论(0) 收藏 举报🌟 为啥要用CoT?——3个核心原因,简单到能喝奶茶时讲明白! 1️⃣ "别让AI跳着走,要它一…

打造专属知识大脑:个人电脑上的本地私有知识库全攻略

打造专属知识大脑:个人电脑上的本地私有知识库全攻略 为什么你需要一个本地私有知识库? 想象一下:当你突然需要查找半年前读过的那篇精彩文章,或者在会议中急需某个重要数据,却发现自己收藏的内容散落在微信、浏览…

uni-app - switchTab 跳转到 页面后不走onLoad,option无法更新 - MT

场景:tabbar页面是展示一个列表,页面中有一个搜索按钮,点击按钮进入搜索页面,输入字段以后返回tabbar页面展示相应的搜索结果,切换tabbar页面后搜索条件置空 方案1:使用 navigateTo跳转传值 坑1:因为搜索页要跳…

[1.1.1]b64steg

将文本复制到随波逐流里面,选择base64隐写解码flag为flag{Base_sixty_four_point_five}

[1.1.11]Shellcode

在https://www.a.tools/Tool.php?Id=230 解码16进制转成字符串

初学markdown,typora

MarkDown学习 "#号" 二级标题 "##" 黑体 "左右各有" 斜体 "左右一个" 斜体加粗 "左右" 删除线 "左右~~" 引用 ">号"天下英雄如过江之鲫,人…

.net core 2.1 mysql 8.0 迁移到 达梦8.4

数据准备:mysql 数据 已经成功迁移到达梦数据库里。如果用不习惯达梦管理工具,可以用 Navicat Premium 17 ,可以连接到达梦数据库。 1、达梦官网下载.net core 2.1 对应的驱动。本地尝试NuGet 包管理器 版本总是对不…

电脑中显存和内存区别?

电脑中显存和内存区别?Posted on 2025-11-29 01:38 Java后端的Ai之路 阅读(0) 评论(0) 收藏 举报显存 vs 内存:电脑里的"专属工作台"与"共享客厅" 🧠 一、最核心的区别:它们服务的对象不…

MySQL 存储过程事务和锁

MySQL的数据库数据DROP DATABASE IF EXISTS studentsdb; CREATE DATABASE IF NOT EXISTS studentsdb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; USE studentsdb; CREATE TABLE student_info…

你可能需要一部 Iphone

首先f12打开,选择用手机打开,悬着iphone,获得flag

LAUNCH X431 PRO3 V+ ELITE: 10.1 Touchscreen, SmartLink 2.0, Full CAN 2.0/CANFD/DoIP/J2534 Support

The Challenge: Outdated Diagnostics Can’t Keep Up with Modern Vehicles For European and American mechanics and car owners, diagnostic tools face a constant uphill battle. Today’s vehicles—from sleek…

2025 Yanhua Mini ACDP-2 Module 38: Efficient BMW G Series BDC2 Immobilizer Key Adding Tool

Simplify BMW G Series Key Programming with the Yanhua Mini ACDP-2 Module 38 For European and American automotive repair shops and BMW G Series owners, the process of immobilizer matching and key additi…

老六的字符串

首先16进制转成字符串然后base64解码之后栅栏解码发现栅栏为2时符合flag的样子,进行凯撒解码,得到flag

基于PSO粒子群优化的能源供应方,光伏发电,EV充电三方交易策略博弈算法matlab仿真

1.课题概述 基于PSO粒子群优化的能源供应方,光伏发电,EV充电三方交易策略博弈算法matlab仿真。建立综合能源园区模型与市场交易框架,构建三方非合作博弈模型,通过算例分析验证模型有效性,为综合能源园区市场运营提供…

神奇的字符

根据题目提示先进行base64解码然后16进制转成字符串最后进行凯撒解码

mysql 迁移 达梦8.4

1、首先安装达梦数据库, 下载链接:产品下载 - 武汉达梦数据库股份有限公司 2、使用达梦自带的迁移工具,可以看迁移工具的文档,很清楚。1)先在迁移管理模块右键新建工程,再点击新建的工程右键创建评估 2)选择需…

2025 CGDI A2 Key Programmer Premium: BMW G Series IMMO, WiFi, No Annual Fee

Struggling with Key Programming Challenges? Meet the CGDI A2 Premium Edition For European and American automotive professionals and car owners, modern vehicle key programming has become a complex puzz…

基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真

1.课题概述 基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真。通过YALMIP和cplex这两个工具箱,完成微电网的最优调度,使得系统的总费用最低。 2.系统仿真结果3.核心程序与模型 版本:MATLAB2022a...........…

HW

下载压缩包,发现打不开,放进010里面发现开头顺序错了,将aRr改成Rar打开文压缩包,打开里面的文档,将隐藏文件显示出来如果复制不了,在字体里面将隐藏取消就可以复制了网上找了一下发现音符解码的平台已经下架了,…

Day5-20251128

本文介绍了编程语言的两种执行方式:编译型(如C/C++)和解释型(如Java)。编译型语言需要将整个程序转换为机器码,而解释型语言通过解释器逐行执行。重点讲解了Java开发环境IDEA的安装与使用:从官网下载安装,创建…