XXL-JOB:分布式任务调度平台

2025-03-01 08:30:15

XXL-JOB Logo

在现代软件开发中,任务调度是一个关键环节,尤其是在需要定时执行任务、批量处理数据或监控系统状态的场景中。XXL-JOB 是一个功能强大且易于使用的分布式任务调度平台,能够帮助开发者高效地管理和调度任务。本文将详细介绍 XXL-JOB 的核心概念、安装方法、基本用法以及一些高级技巧,帮助你掌握这一强大的工具。

核心概念

1. 分布式任务调度

XXL-JOB 是一个分布式任务调度平台,支持多节点部署,能够处理大规模的任务调度需求。通过分布式架构,XXL-JOB 可以提高任务执行的可靠性和效率。

2. 任务管理

XXL-JOB 提供了丰富的任务管理功能,包括任务的创建、编辑、删除、暂停和恢复。开发者可以通过 Web 界面轻松管理任务。

3. 定时任务

XXL-JOB 支持多种定时任务配置方式,包括 Cron 表达式、固定频率和固定延迟。开发者可以根据需求灵活配置任务的执行时间。

4. 任务监控

XXL-JOB 提供了详细的任务监控功能,包括任务执行日志、任务执行状态和任务执行统计。开发者可以通过这些监控信息及时发现和解决问题。

5. 高可用性

XXL-JOB 支持高可用性部署,通过主备模式和负载均衡,确保任务调度的稳定性和可靠性。

安装方法

1. 下载和解压

首先,从 XXL-JOB 的官方 GitHub 仓库下载最新版本的源码,并解压到本地目录。

wget https://github.com/xuxueli/xxl-job/releases/download/v2.3.0/xxl-job-2.3.0.zip
unzip xxl-job-2.3.0.zip
cd xxl-job-2.3.0

2. 配置数据库

XXL-JOB 使用 MySQL 作为数据库,需要先配置数据库连接信息。编辑 xxl-job-admin/src/main/resources/application.properties 文件。

### xxl-job, admin config
xxl.job.i18n=en

### xxl-job, admin addresses
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### xxl-job, email config
xxl.job.mail.host=smtp.qq.com
xxl.job.mail.port=25
xxl.job.mail.username=xxx@qq.com
xxl.job.mail.password=xxxxxx
xxl.job.mail.from=xxx@qq.com

### xxl-job, access token
xxl.job.accessToken=

### xxl-job, log path
xxl.job.triggerpool.fast.max=64
xxl.job.triggerpool.slow.max=100
xxl.job.logretentiondays=30

### xxl-job, datasource
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=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

3. 启动 Admin

启动 XXL-JOB 的 Admin 服务。

cd xxl-job-admin
mvn clean package -Dmaven.test.skip=true
cd target
java -jar xxl-job-admin-2.3.0.jar

4. 启动 Executor

启动 XXL-JOB 的 Executor 服务。

cd xxl-job-executor-sample
mvn clean package -Dmaven.test.skip=true
cd target
java -jar xxl-job-executor-sample-2.3.0.jar

基本用法

1. 创建任务

登录 XXL-JOB 的 Web 管理界面,创建一个新的任务。

  • 任务名称:输入任务的名称。
  • 任务描述:输入任务的描述。
  • 任务组:选择或创建一个新的任务组。
  • JobHandler:输入任务的处理器名称。
  • 任务路由策略:选择任务的路由策略,如轮询、随机等。
  • Cron 表达式:输入任务的 Cron 表达式,配置任务的执行时间。
  • 阻塞处理策略:选择任务的阻塞处理策略,如单机串行、丢弃后续调度等。
  • 任务超时时间:设置任务的超时时间。
  • 失败重试次数:设置任务失败后的重试次数。

2. 编辑任务

在任务列表中选择一个任务,点击编辑按钮进行修改。

  • 任务名称:修改任务的名称。
  • 任务描述:修改任务的描述。
  • 任务组:修改任务组。
  • JobHandler:修改任务处理器名称。
  • 任务路由策略:修改任务路由策略。
  • Cron 表达式:修改任务的 Cron 表达式。
  • 阻塞处理策略:修改任务的阻塞处理策略。
  • 任务超时时间:修改任务的超时时间。
  • 失败重试次数:修改任务失败后的重试次数。

3. 删除任务

在任务列表中选择一个任务,点击删除按钮进行删除。

4. 暂停任务

在任务列表中选择一个任务,点击暂停按钮暂停任务的执行。

5. 恢复任务

在任务列表中选择一个任务,点击恢复按钮恢复任务的执行。

高级技巧

1. 使用 JobHandler

JobHandler 是任务的具体执行逻辑,可以通过继承 IJobHandler 接口实现。

import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;

@Component
public class SampleXxlJob {

    @XxlJob("demoJobHandler")
    public void demoJobHandler() throws Exception {
        XxlJobLogger.log("XXL-JOB, Hello World.");
        for (int i = 0; i < 5; i++) {
            XxlJobLogger.log("beat at:" + i);
            Thread.sleep(1000);
        }
        XxlJobLogger.log("XXL-JOB, Hello World.");
    }
}

2. 配置多 Executor

xxl-job-executor-sample/src/main/resources/application.properties 文件中配置多个 Executor。

### xxl-job, admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin

### xxl-job, executor appname
xxl.job.executor.appname=xxl-job-executor-sample

### xxl-job, executor ip
xxl.job.executor.ip=

### xxl-job, executor port
xxl.job.executor.port=9999

### xxl-job, executor log path
xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler

### xxl-job, executor log retension days
xxl.job.executor.logretentiondays=30

3. 使用 Webhook

XXL-JOB 支持通过 Webhook 调用外部服务。

{
  "jobId": 1,
  "executorHandler": "demoJobHandler",
  "executorParams": "demoJobHandler",
  "addressList": null,
  "scheduleTime": 1633072800000,
  "glueType": "BEAN",
  "glueSource": null,
  "glueUpdatetime": 1633072800000,
  "broadcastIndex": 0,
  "broadcastTotal": 0,
  "executorTimeout": 0,
  "executorFailRetryCount": 0,
  "glueVersion": 0,
  "triggerTime": 1633072800000,
  "triggerCode": 200,
  "triggerMsg": null,
  "handleTime": 1633072800000,
  "handleCode": 200,
  "handleMsg": null,
  "alarmStatus": 0
}

4. 使用监控

XXL-JOB 提供了详细的监控功能,可以通过 Web 界面查看任务的执行日志和执行状态。

  • 任务日志:查看任务的执行日志,了解任务的执行情况。
  • 任务状态:查看任务的执行状态,包括成功、失败、运行中等。
  • 任务统计:查看任务的执行统计,包括任务的执行次数、执行时间等。

总结

XXL-JOB 是一个功能强大且易于使用的分布式任务调度平台,能够帮助开发者高效地管理和调度任务。通过本文的介绍,你已经掌握了 XXL-JOB 的核心概念、安装方法、基本用法以及一些高级技巧。希望这些内容能够帮助你在项目中更好地使用 XXL-JOB,提升任务调度的效率和可靠性。

xuxueli
XXL-JOB是一个分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。现已接入多家公司线上产品线,开箱即用。
Java
GPL-3.0
28.5 k