XXL-JOB 定时任务——从 Docker 部署到分片广播,分布式任务调度落地
Scheduled单机跑跑还行多实例部署了就全乱了——哪个实例执行重复执行怎么办数据怎么分片并行处理XXL-JOB 就是专治这些的调度中心统一管任务执行器集群自动注册分片广播把大数据量拆成 N 份给 N 台机器并行跑。这篇文章从 Docker 部署、Spring Boot 3.x 整合到分片广播、任务参数、失败处理、父子任务链全部用一个完整流程串下来。安装可以去官网下载源码然后编译部署这里我只介绍使用 docker 部署docker 安装先去 github 官网找到 xxl_job 的 SQL 文件注意要去找对应版本的 sql 文件不要找 master 下的。在 MySQL 数据库中执行目前最新版要求 MySQL 要 8.0 以上执行完后会创建一个新的数据库名为xxl_job下载之前可以去 docker hub 搜索 xxl-job-admin 查看最新版dockerpull m.daocloud.io/docker.io/xuxueli/xxl-job-admin:3.4.2dockerrun-d\--nameidle-store-xxl-job-admin\-p8095:8080\-eTZAsia/Shanghai\-eJAVA_OPTS-Xms256m -Xmx512m\-ePARAMS--spring.datasource.urljdbc:mysql://host.docker.internal:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse \ --spring.datasource.usernameroot \ --spring.datasource.passwordHliu1026. \ --xxl.job.accessTokenidle_store_xxl_job_2026\-v/Users/ice/Desktop/cola/code/docker/xxl-job/logs:/data/applogs\xuxueli/xxl-job-admin:3.4.2之后访问 http://locahost:8095可以看到控制台默认用户名 admin账号密码 123456Spring Boot 3.x 整合配置之前我们先来到控制台它这里的执行器管理里面有一个执行器默认案例我们编辑一下这个改成我们自己想要的名字选择自动注册就可以。然后在项目中在 pom.xml 中引入依赖dependencygroupIdcom.xuxueli/groupIdartifactIdxxl-job-core/artifactIdversion3.4.2/version/dependency版本和下载的 XXL-JOB 保持一致之后进行配置在 application.yaml 配置文件中配置内容xxl:job:adminAddresses:http://localhost:8095# xxl-job 调度中心部署根地址如调度中心集群部署存在多个地址则用逗号分隔accessToken:idle_store_xxl_job_2026# 和 xxl-job 上创建的 token 保持一致appName:xxl-job-executor-idle-store# 和 xxl-job 上创建的执行器名称保持一致ip:# 执行器 ip, 为空表示自动获取 ipport:9999# 执行器端口号logPath:./log/xxl-job/jobhandler# 执行器日志存放路径logRetentiondays:30# 日志保留时间单位天然后创建两个配置类一个读取配置一个初始化执行器ConfigurationProperties(prefixXxlJobProperties.PREFIX)ComponentDatapublicclassXxlJobProperties{publicstaticfinalStringPREFIXxxl.job;privateStringadminAddresses;privateStringaccessToken;privateStringappName;privateStringip;privateintport;privateStringlogPath;privateintlogRetentionDays30;}ConfigurationSlf4jpublicclassXxlJobConfig{ResourceprivateXxlJobPropertiesxxlJobProperties;/** * 初始化执行器 */BeanpublicXxlJobSpringExecutorxxlJobExecutor(){log.info( xxl-job config init.);XxlJobSpringExecutorxxlJobSpringExecutornewXxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppName());xxlJobSpringExecutor.setIp(xxlJobProperties.getIp());xxlJobSpringExecutor.setPort(xxlJobProperties.getPort());xxlJobSpringExecutor.setAccessToken(xxlJobProperties.getAccessToken());xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath());xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays());returnxxlJobSpringExecutor;}}配置完后启动项目如果成功注册的话在控制台就能查看到了 ip 端口写第一个任务之后来到任务管理这里面就可以配置我们执行器要执行的任务了这里选中后进行编辑配置完之后点击保存回到我们的服务中创建/job包存放定时任务比如我创建一个CreateTableXxlJob类定义如下ComponentpublicclassCreateTableXxlJob{XxlJob(createTableJobHandler)publicvoidcreateTableJobHandler()throwsException{XxlJobHelper.log(# 初始化明日增量数据表...);}}这里的createTableJobHandler对应前面的JobHandler。通过XxlJobHelper.log打印日志这样在管理后台能看到日志信息在控制台中我们可以自己运行定时任务可以选择运行一次或者启动(根据我们调度类型执行比如我这里就是5秒执行一次)。我们选择启动然后查询日志如果你有梯子可能会查询日志失败需要改一下配置文件中的ip改为本机IP比如我这里ip:172.25.64.42控制台配置任务调度类型类型说明示例无不自动调度只能手动触发临时任务CRON按 Cron 表达式周期性触发0 0 2 * * ?每天凌晨 2 点固定速度固定间隔秒为单位60每 60 秒一次任务配置运行模式任务以 JobHandler 方式维护在执行器端需要结合 “JobHandler” 属性匹配执行器中任务JobHandler 对应执行器中开发的任务类方法上XxlJob注解自定义的 value 值路由策略多实例怎么分配任务策略行为FIRST固定选第一台ROUND轮询RANDOM随机FAILOVER心跳检测选第一个活着的SHARDING_BROADCAST分片广播所有机器都执行传分片参数调度过期策略忽略调度过期后忽略过期的任务从当前时间开始重新计算下次触发时间立即执行一次调度过期后立即执行一次并从当前时间开始重新计算下次触发时间阻塞处理策略任务堆积怎么办调度过于密集执行器来不及处理时的处理策略单机串行默认调度请求进入单机执行器后调度请求进入FIFO队列并以串行方式运行丢弃后续调度调度请求进入单机执行器后发现执行器存在运行的调度任务本次请求将会被丢弃并标记为失败覆盖之前调度调度请求进入单机执行器后发现执行器存在运行的调度任务将会终止运行中的调度任务并清空队列然后运行本地调度任务任务超时时间支持自定义任务超时时间任务运行超时将会主动中断任务失败重试次数支持自定义任务失败重试次数当任务失败时将会按照预设的失败重试次数主动进行重试分配广播分片广播是 XXL-JOB 最值钱的功能。比如凌晨 2 点需要处理全量用户数据——10 万条部署了 3 台实例每台各分 3.3 万条并行处理ComponentpublicclassDataAlignXxlJob{XxlJob(dataAlignJobHandler)publicvoiddataAlignJobHandler(){// 拿到分片参数intshardIndexXxlJobHelper.getShardIndex();// 当前分片0, 1, 2intshardTotalXxlJobHelper.getShardTotal();// 总分片数3XxlJobHelper.log(当前分片: {}/{},shardIndex,shardTotal);// 按分片取数据每台机器只取自己那一段// SELECT * FROM user WHERE id % #{shardTotal} #{shardIndex}ListUserusersuserMapper.selectByShard(shardIndex,shardTotal);for(Useruser:users){// 处理逻辑...}XxlJobHelper.handleSuccess(分片 shardIndex 处理完成共 users.size() 条);}}用XxlJobHelper.getShardIndex()和getShardTotal()拿到分片信息SQL 里用WHERE id % shardTotal shardIndex做数据分片。3 台机器各处理 1/3提速 3 倍。控制台把这个任务的路由策略改成SHARDING_BROADCAST即可。任务参数控制台传参动态调整逻辑控制台 “任务参数” 里填的内容代码里能拿到XxlJob(dataAlignJobHandler)publicvoiddataAlignJobHandler(){StringparamXxlJobHelper.getJobParam();// batchSize500,startId10000// 解析参数动态调整}适合控制每次处理的批量大小、起止 ID 这些需要临时调整的参数——改控制台不用改代码。成功/失败标记XxlJob(myJobHandler)publicvoidmyJobHandler(){try{// 业务逻辑XxlJobHelper.handleSuccess(处理完成共 1000 条);}catch(Exceptione){XxlJobHelper.handleFail(处理失败: e.getMessage());}}不手动调的话默认算成功。handleSuccess和handleFail的参数会显示在控制台日志最前面方便快速看到执行结果。父子任务——任务链控制台配置 “子任务ID” 后当前任务执行成功时自动触发子任务。适合有先后依赖的场景——比如先同步数据 → 重建索引任务 A每天凌晨 2 点同步数据CRON: 0 0 2 * * ? ↓ 执行成功后自动触发 任务 B重建 Elasticsearch 索引调度类型无只被 A 触发

相关新闻

Kimi长文档解析准确率从62%跃升至98.7%(实测27份合同+学术论文全记录)

Kimi长文档解析准确率从62%跃升至98.7%(实测27份合同+学术论文全记录)

更多请点击: https://kaifayun.com 第一章:Kimi长文档解析准确率跃升的实证发现 近期对Kimi大模型在长文档结构化解析任务中的表现开展系统性基准测试,发现其在10万字以上PDF/DOCX文档的关键信息抽取准确率较上一版本提升达23.7%&#xff08…

2026/7/18 19:21:57阅读更多 →
如何快速免费将OFD转PDF:三分钟掌握完整转换方案

如何快速免费将OFD转PDF:三分钟掌握完整转换方案

如何快速免费将OFD转PDF:三分钟掌握完整转换方案 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 在数字办公时代,OFD转PDF已成为许多用户面临的日常挑战。作为中国自主制定的版…

2026/7/18 19:21:57阅读更多 →
CVD工艺详解:原理、分类与应用

CVD工艺详解:原理、分类与应用

1. CVD工艺概述与核心概念 化学气相沉积(Chemical Vapor Deposition,简称CVD)是一种在半导体制造、涂层技术和材料科学领域广泛应用的材料生长技术。这项工艺通过在反应室内引入气态前驱体,在加热的基板表面发生化学反应&#xff…

2026/7/18 19:19:57阅读更多 →
智慧医院系统源码搭建提升医院数字化管理能力

智慧医院系统源码搭建提升医院数字化管理能力

近年来,数字化转型已成为医疗行业发展的重要方向。从预约挂号、电子病历到互联网诊疗、智能导诊,医院越来越多的业务开始依托数字化平台开展。对于医疗机构来说,建设一套智慧医院系统,不仅能够改善患者就医体验,更能够…

2026/7/18 20:26:02阅读更多 →
2026年工业船型开关选购指南:这3家厂家口碑最佳

2026年工业船型开关选购指南:这3家厂家口碑最佳

在工业电器领域,船型开关看似不起眼,却是设备安全与稳定性的关键一关。无论是厨房电器的频繁启停,还是电动工具的高载流场景,一颗合格的船型开关都能显著提升产品寿命。2026年,随着全球供应链持续优化,选择…

2026/7/18 20:26:02阅读更多 →
胶凝材料码垛工作站 云汇智能助力建材行业产线自动化升级

胶凝材料码垛工作站 云汇智能助力建材行业产线自动化升级

胶凝材料(如水泥、砂浆、腻子粉、石膏粉等)的码垛是连接生产与仓储的关键环节。传统的人工码垛方式劳动强度大、效率波动明显,难以匹配高速包装线的出料节拍。随着建材行业对生产效率和产品品质要求的不断提升,胶凝材料码垛工序的…

2026/7/18 20:26:02阅读更多 →
告别平面图表:AR数据可视化如何重塑商业决策

告别平面图表:AR数据可视化如何重塑商业决策

告别平面图表:AR数据可视化如何重塑商业决策在传统的工业与商业数据分析场景中,决策者往往面临着“数据孤岛”与“认知断层”的双重困境。ERP、MES、SCADA 等系统产生了海量的结构化数据,但这些数据最终大多以二维报表、静态折线图或仪表盘的…

2026/7/18 20:26:02阅读更多 →
搅拌器需要专人操作吗?一句话讲清合规标准

搅拌器需要专人操作吗?一句话讲清合规标准

不需要持证专人,但分工况需要定岗专人值守。 一、普通工况(食品、日化、水性涂料、常温常压)✅ 无需专属专人、无需考证、可多人轮岗 只需员工经过简单培训,掌握启停规范即可,生产中正常巡检就行,符合安检要…

2026/7/18 20:26:02阅读更多 →
颠覆传统共享工具追求所有人统一标准,编写程序,保留每个人独特的修改版本,不强制合并,汇总多元思路形成备选创意库。

颠覆传统共享工具追求所有人统一标准,编写程序,保留每个人独特的修改版本,不强制合并,汇总多元思路形成备选创意库。

下面以心理健康与创新能力促进课程中常见的「团体创意方案共创」场景为例,用 Python 实现一个轻量级、可本地运行的命令行工具,帮助你完成:- ✅ 不强制统一标准- ✅ 保留每个人独特的修改版本- ✅ 汇总多元思路- ✅ 形成备选创意库- ✅ 支持后…

2026/7/18 20:24:02阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/18 10:49:13阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/18 8:49:08阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/18 14:49:24阅读更多 →
从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:14阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:14阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:14阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/17 22:48:46阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/18 14:49:24阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/18 18:49:35阅读更多 →