SpringBoot基础教程3-1-4 xxl-job快速整合

本文是SpringBoot基础教程的第三部分,介绍如何快速整合轻量级分布式任务调度平台XXL-JOB。内容包括XXL-JOB的简单理解、本地环境准备、调度中心和执行器的部署、配置及启动,以及单个和多个执行器的示例,帮助读者掌握XXL-JOB的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概述

XXL-JOB是一个轻量级分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。本文演示如何使用快速SpringBoot,搭建XXL-JOB调度平台。

xxl-job详细介绍请移至官网

2 简单理解

xxl-job调度中心执行器两部分组成,调度中心负责任务的调度,执行器负责执行任务。调度中心后台,支持配置任务,控制任务,查看任务运行日志等功能。

3 本地环境准备

  • Java 1.8
  • mysql 5.6
  • Git 2.16.2
  • Maven 3.2.5
  • Tomcat 9
  • vmware + centos (仅用于分片调度演示)

4 部署调度中心

  • 拉取源码

git clone git@github.com:xuxueli/xxl-job.git

  • 初始化数据库:

目录:/xxl-job/doc/db/tables_xxl_job.sql

  • 修改调度中心数据源配置

目录:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties

  • 编译打包

cd /xxl-job/xxl-job\xxl-job-admin
mvn clean pacakge

  • war包,拷贝至tomcat

war所在目录:/xxl-job/xxl-job\xxl-job-admin/target
tomcat部署目录:/apache-tomcat-9.0.12/webapps

  • 启动tomcat

运行/apache-tomcat-9.0.12/bin目录下的startup.bat

  • 访问控制中心后台

http://localhost:8080/xxl-job-admin-1.9.1/

注意xxl-job版本已官网最新版本为准

5 单个执行器示例

5.1 添加依赖

<!-- xxl-job-core -->
<dependency>
	<groupId>com.xuxueli</groupId>
	<artifactId>xxl-job-core</artifactId>
	<version>1.9.1</version>
</dependency>

5.2 添加调度中心和执行器配置

xxl:
  job:
    admin:
      ### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。
      addresses: http://127.0.0.1:8080/xxl-job-admin-1.9.1
    executor:
      ### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。
      ### 执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,手动设置IP时将会绑定Host。单机部署多个执行器时,注意要配置不同执行器端口;
      appName: my-xxl-job-executor
      ip:
      port: 8889
      ### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
      logPath: /data/applogs/xxl-job/jobhandler
      ### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
      logRetentionDays: -1
    ### xxl-job, access token:执行器通讯TOKEN,非空时启用
    accessToken:
server:
  port: 8081

5.3 配置执行器

@Slf4j
@Configuration
public class XxlJobConfig {
    @Value("${xxl.job.admin.addresses}")
    private String addresses;
    @Value("${xxl.job.executor.appName}")
    private String appName;
    @Value("${xxl.job.executor.ip}")
    private String ip;
    @Value("${xxl.job.executor.port}")
    private int port;
    @Value("${xxl.job.accessToken}")
    private String accessToken;
    @Value("${xxl.job.executor.logPath}")
    private String logPath;
    @Value("${xxl.job.executor.logRetentionDays}")
    private int logRetentionDays;

    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobExecutor xxlJobExecutor() {
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
        xxlJobExecutor.setAdminAddresses(addresses);
        xxlJobExecutor.setAppName(appName);
        xxlJobExecutor.setIp(ip);
        xxlJobExecutor.setPort(port);
        xxlJobExecutor.setAccessToken(accessToken);
        xxlJobExecutor.setLogPath(logPath);
        xxlJobExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobExecutor;
    }
}

5.4 新建执行器

/**
 * 任务Handler示例(Bean模式)
 *
 */
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {
    @Override
    public ReturnT<String> execute(String param) {
        XxlJobLogger.log("XXL-JOB, Hello World.");
        return SUCCESS;
    }
}

5.5 启动执行器

执行器会定时到调度中心注册,上图说明注册成功;任务调度中心执行管理菜单中能查询所有注册的执行器。

5.6 任务调度中心新增任务

5.7 任务调度中心查看调度日志

6 多个执行器分片执行示例

6.1 新建分片调度执行器

/**
 * 分片广播任务
 */
@JobHandler(value="shardingJobHandler")
@Component
public class ShardingJobHandler extends IJobHandler {
    @Override
    public ReturnT<String> execute(String param) {
        // 分片参数
        ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
        XxlJobLogger.log("分片参数:当前分片序号 = {0}, 总分片数 = {1}", shardingVO.getIndex(), shardingVO.getTotal());

        // 业务逻辑
        for (int i = 0; i < shardingVO.getTotal(); i++) {
            if (i == shardingVO.getIndex()) {
                XxlJobLogger.log("第 {0} 片, 命中分片开始处理", i);
            } else {
                XxlJobLogger.log("第 {0} 片, 忽略", i);
            }
        }
        return SUCCESS;
    }
}

6.2 虚拟机,本地同时启动执行器

  • 虚拟机中代码通过git同步更新

  • 注意:需要修改虚拟机中,调度中心配置文件,调度中心地址改为本地IP

  • 注意:确保本地与虚拟机的网络环境,保证http协议畅通

  • 编译打包虚拟机代码:mvn clean package

  • 进入目录:/Chapter3-1-4/target

  • 启动服务:java -jar Chapter3-1-4-1.0-SNAPSHOT.jar

  • 启动后,检查调度中心执行器是否注册成功

![6](/SpringBoot基础教程3-1-4 xxl-job快速整合/6.png)

6.3 任务调度中心新增任务

6.4 任务调度中心查看调度日志


7 工程目录

8 结束语

工欲善其事必先利其器,拥抱开源,解放双手,本文源码


欢迎关注博主公众号,第一时间推送最新文章

欢迎关注博主公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值