news 2026/5/7 21:37:28

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/6 18:59:35

声学回声消除在天外客中的工程实现

声学回声消除在天外客中的工程实现 在智能音箱、会议终端和车载语音助手日益普及的今天&#xff0c;用户早已不再满足于“按一下再说”的半双工交互。他们希望设备能像一个真正的对话者——你说它听&#xff0c;它说你也能同时说。这种“全双工”体验的背后&#xff0c;藏着一个…

作者头像 李华
网站建设 2026/5/6 18:18:59

【独家首发】Open-AutoGLM Windows 11本地部署全流程(含私有模型加载技巧)

第一章&#xff1a;Open-AutoGLM 项目背景与本地部署意义Open-AutoGLM 是一个开源的自动化自然语言处理框架&#xff0c;专注于将 GLM 系列大语言模型的能力下沉至本地化、轻量化应用场景。该项目由社区驱动开发&#xff0c;旨在降低企业和开发者使用高性能语言模型的技术门槛&…

作者头像 李华
网站建设 2026/5/3 19:10:30

LiteGraph.js完整指南:从零开始掌握可视化节点编程

LiteGraph.js完整指南&#xff1a;从零开始掌握可视化节点编程 【免费下载链接】litegraph.js A graph node engine and editor written in Javascript similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D. The engine can run client side or ser…

作者头像 李华
网站建设 2026/5/1 20:09:45

2025代码托管平台深度评测:本土化与全球化解决方案全景解析

2025代码托管平台深度评测&#xff1a;本土化与全球化解决方案全景解析 本土化服务的标杆&#xff1a;Gitee如何重塑国内开发体验 在数字化转型加速的2025年&#xff0c;代码托管平台的选择直接关系到开发团队的协作效率与合规安全。作为国内领先的一站式代码托管服务&#xff…

作者头像 李华
网站建设 2026/5/1 23:43:18

5个步骤让你的系统监控工具从单调到惊艳的界面改造指南

还在忍受那些枯燥乏味的系统监控界面吗&#xff1f;想要让你的桌面监控既实用又美观&#xff1f;通过简单的配置调整&#xff0c;你可以将单调的系统监控工具打造成桌面的视觉亮点。本文将带你从零开始&#xff0c;通过Conky这款轻量级系统监控工具&#xff0c;实现从基础监控到…

作者头像 李华