news 2026/9/8 0:44:57

XXL-Job 实现分布式任务调度

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
XXL-Job 实现分布式任务调度

XXL-Job的概念

XXL-Job 是一个分布式任务调度平台,由大众点评员工徐雪里(XXL)开源。它具有轻量级、易集成、易扩展等特点,基于 Java 语言开发,提供了 Web 界面进行任务的管理和调度,支持多种任务调度方式,可帮助开发者快速实现任务的分布式调度。

XXL-Job 的用处

  1. 分布式任务调度:在分布式系统中,经常需要在不同的节点上执行定时任务。XXL-Job 可以将任务分发到多个节点上执行,提高系统的处理能力和可靠性。
  2. 任务管理可视化:提供了直观的 Web 管理界面,方便开发者对任务进行管理,如任务的新增、修改、删除、暂停、启动等操作,还能查看任务的执行日志和执行状态。
  3. 丰富的调度策略:支持 CRON 表达式、固定间隔、固定延迟等多种调度方式,可以满足不同场景下的任务调度需求。
  4. 任务失败重试:当任务执行失败时,XXL-Job 支持设置重试次数和重试间隔,提高任务执行的成功率。
  5. 故障转移:如果某个执行器节点出现故障,XXL-Job 可以自动将任务转移到其他可用的节点上执行,保证任务的正常运行。

XXL-Job 的使用步骤

1. 环境准备
  • JDK 1.8+
  • MySQL 5.7+
  • Maven
2. 部署调度中心
  1. 下载源码:从 XXL-Job 的 GitHub 仓库(https://github.com/xuxueli/xxl-job )下载源码。
  2. 创建数据库:执行xxl-job/doc/db/tables_xxl_job.sql脚本,在 MySQL 中创建 XXL-Job 所需的数据库和表。
  3. 配置调度中心:修改xxl-job-admin/src/main/resources/application.properties文件,配置数据库连接信息:
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root
  1. 启动调度中心:运行xxl-job-admin模块的XxlJobAdminApplication类,启动调度中心。访问http://localhost:8080/xxl-job-admin,使用默认账号admin和密码123456登录。
3. 创建执行器项目
  1. 创建 Maven 项目:在项目的pom.xml中添加 XXL-Job 依赖:
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.1</version> </dependency>
  1. 配置执行器:在application.properties中配置执行器信息:
### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册; xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin ### 执行器通讯TOKEN [选填]:非空时启用; xxl.job.accessToken= ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册 xxl.job.executor.appname=xxl-job-executor-sample ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。 xxl.job.executor.address= ### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; xxl.job.executor.ip= ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口; xxl.job.executor.port=9999 ### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler ### 执行器日志保存天数 [选填] :值大于3时生效,启用执行器日志定期清理功能,否则不生效; xxl.job.executor.logretentiondays=30
  1. 创建任务处理器:创建一个类,实现IJobHandler接口,并使用@JobHandler注解标记:
import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component; @Component public class SampleXxlJob { @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-Job 任务开始执行"); // 任务逻辑代码 XxlJobHelper.log("XXL-Job 任务执行结束"); } }
  1. 启动执行器:运行执行器项目的启动类,执行器会自动向调度中心注册。
4. 在调度中心配置任务
  1. 登录调度中心:访问http://localhost:8080/xxl-job-admin,登录调度中心。
  2. 新增执行器:在“执行器管理”页面,点击“新增”按钮,添加执行器信息,AppName 要与执行器项目配置的xxl.job.executor.appname一致。
  3. 新增任务:在“任务管理”页面,点击“新增”按钮,配置任务信息,包括任务描述、调度类型、执行器、任务处理器等。
  4. 启动任务:配置完成后,点击任务列表中的“启动”按钮,任务将按照设定的调度策略开始执行。

通过以上步骤,你就可以使用 XXL-Job 实现分布式任务调度了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 6:23:02

10个降AI率工具,自考党必备!

10个降AI率工具&#xff0c;自考党必备&#xff01; AI降重工具&#xff1a;自考党论文写作的得力助手 随着人工智能技术的不断发展&#xff0c;越来越多的自考学生在撰写论文时会借助AI工具进行内容生成。然而&#xff0c;这些由AI生成的内容往往存在明显的“AI痕迹”&#…

作者头像 李华
网站建设 2026/9/7 18:37:27

开源GIS巨擘GRASS:从入门到精通的全方位指南

开源GIS巨擘GRASS&#xff1a;从入门到精通的全方位指南 【免费下载链接】grass GRASS GIS - free and open source Geographic Information System (GIS) 项目地址: https://gitcode.com/gh_mirrors/gr/grass 您是否曾为处理复杂的空间数据而烦恼&#xff1f;是否在寻找…

作者头像 李华
网站建设 2026/9/8 2:55:37

突破PHP瓶颈:3小时构建高并发WebSocket实时互动游戏

突破PHP瓶颈&#xff1a;3小时构建高并发WebSocket实时互动游戏 【免费下载链接】workerman-todpole HTML5WebSocketPHP(Workerman) , rumpetroll server writen using php 项目地址: https://gitcode.com/gh_mirrors/wo/workerman-todpole 还在为PHP无法处理高并发实时…

作者头像 李华
网站建设 2026/9/7 13:31:01

AI智能棋盘借助SHT30实现高精度环境测量

AI智能棋盘借助SHT30实现高精度环境测量在AI与物联网深度融合的今天&#xff0c;传统设备正悄然经历一场感知能力的革命。以AI智能棋盘为例&#xff0c;它早已不只是一个能识别棋子位置、连接云端对弈的“聪明板子”。真正决定其长期稳定性与用户体验的&#xff0c;往往是那些看…

作者头像 李华
网站建设 2026/9/7 1:13:31

开源项目代码质量保障终极指南:从OSHI项目学到的完整教程

开源项目代码质量保障终极指南&#xff1a;从OSHI项目学到的完整教程 【免费下载链接】oshi Native Operating System and Hardware Information 项目地址: https://gitcode.com/gh_mirrors/os/oshi 在当今快速发展的软件开发领域&#xff0c;代码质量保障已成为开源项目…

作者头像 李华
网站建设 2026/9/7 2:28:27

Skynet框架信号处理机制:如何实现游戏服务器优雅退出?

Skynet框架信号处理机制&#xff1a;如何实现游戏服务器优雅退出&#xff1f; 【免费下载链接】skynet 一个轻量级的在线游戏框架。 项目地址: https://gitcode.com/GitHub_Trending/sk/skynet 你是否曾经遇到过这样的情况&#xff1a;游戏服务器突然崩溃&#xff0c;玩…

作者头像 李华