news 2026/5/28 0:06:07

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/5/27 7:28:29

iOS动态文本动画技术演进:从LTMorphingLabel看体验创新

iOS动态文本动画技术演进&#xff1a;从LTMorphingLabel看体验创新 【免费下载链接】LTMorphingLabel [EXPERIMENTAL] Graceful morphing effects for UILabel written in Swift. 项目地址: https://gitcode.com/gh_mirrors/lt/LTMorphingLabel 你是否注意到&#xff0c…

作者头像 李华
网站建设 2026/5/27 15:00:01

AI智能棋盘集成ASR5970实现远场拾音功能

AI智能棋盘集成ASR5970实现远场拾音功能在一间宽敞的教室里&#xff0c;一位老师站在三米外的讲台上轻声说&#xff1a;“开始对局。”面前的AI智能棋盘随即亮起指示灯&#xff0c;自动进入准备状态——没有唤醒词&#xff0c;无需联网&#xff0c;响应几乎即时发生。这样的场景…

作者头像 李华
网站建设 2026/5/27 21:57:48

Open-AutoGLM命令行指令全图解(从入门到精通仅需这一篇)

第一章&#xff1a;Open-AutoGLM命令行模式常用指令概览Open-AutoGLM 提供了强大的命令行接口&#xff0c;支持模型推理、参数配置、任务执行与日志监控等多种功能。用户可通过终端快速调用核心能力&#xff0c;适用于自动化脚本与批量处理场景。基础启动指令 启动 Open-AutoGL…

作者头像 李华
网站建设 2026/5/26 4:56:37

基于Springboot+Vue的新闻发布会管理系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦新闻发布会筹备流程繁琐、参会人员管理混乱、信息同步不及时、会后数据复盘低效的痛点&#xff0c;设计实现基于 SpringBootVue 的新闻发布会管理系统。系统后端以 SpringBoot 为核心框架&#xff0c;整合 MyBatis-Plus 实现 MySQL 数据库高效交互&#xff0…

作者头像 李华
网站建设 2026/5/26 4:54:54

JTAppleCalendar:打造iOS平台高度定制化日历组件的终极选择

JTAppleCalendar&#xff1a;打造iOS平台高度定制化日历组件的终极选择 【免费下载链接】JTAppleCalendar The Unofficial Apple iOS Swift Calendar View. Swift calendar Library. iOS calendar Control. 100% Customizable 项目地址: https://gitcode.com/gh_mirrors/jt/J…

作者头像 李华
网站建设 2026/5/27 9:32:12

基于Springboot的火车售票系统设计与实现(源码+lw+部署文档+讲解等)

课题介绍 当前铁路客运售票仍面临线下流程繁琐、票源实时管控难度大、退改签效率低等问题&#xff0c;传统人工售票模式不仅增加铁路部门运营成本&#xff0c;也易出现票源信息不对称、黄牛囤票等问题&#xff0c;影响乘客出行体验与铁路运力调配效率。基于此&#xff0c;开发基…

作者头像 李华