官方地址:https://www.xuxueli.com/xxl-job/

概述

xxl-job任务调度平台分为客户端和服务端,服务端需要下载源码修改配置文件部署,客户端可以直接整合springboot调用。

服务端部署

  1. 下载源码,找到数据库初始化sql

    /xxl-job/doc/db/tables_xxl_job.sql
  2. 编译源码

    修改配置文件中的数据库连接配置、服务器端口(默认8080)

    /xxl-job/xxl-job-admin/src/main/resources/application.properties
    server.port=9527
    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

    image.png
    保存后,cmd到/xxl-job/xxl-job-admin/目录下

    mvn clean package

    在/xxl-job/xxl-job-admin/target/目录下找到xxl-job-admin-2.2.0.jar,cmd执行

    java -jar xxl-job-admin-2.2.0.jar
  3. 登陆管理页面

    http://localhost:9527/xxl-job...
    username: admin
    password: 123456

客户端部署

  1. 在项目中引入依赖

    gradle:

    implementation 'com.xuxueli:xxl-job-core:2.2.0'

    maven:

    <dependency>
        <groupId>com.xuxueli</groupId>
        <artifactId>xxl-job-core</artifactId>
        <version>2.2.0</version>
    </dependency>
  2. 修改项目properties或yml配置文件,增加如下配置

    ### 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
    xxl.job.admin.addresses=http://localhost:9527/xxl-job-admin/
    ### 执行器通讯TOKEN [选填]:非空时启用;
    xxl.job.accessToken=
    ### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
    xxl.job.executor.appname=coffee
    ### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”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时生效; 否则, 如-1, 关闭自动清理功能;
    xxl.job.executor.logretentiondays=30

    image.png

  3. 增加一个配置类

    @Log4j2
    @Configuration
    public class XxlJobConfig {
    
        @Value("${xxl.job.admin.addresses}")
        private String adminAddresses;
    
        @Value("${xxl.job.accessToken}")
        private String accessToken;
    
        @Value("${xxl.job.executor.appname}")
        private String appname;
    
        @Value("${xxl.job.executor.address}")
        private String address;
    
        @Value("${xxl.job.executor.ip}")
        private String ip;
    
        @Value("${xxl.job.executor.port}")
        private int port;
    
        @Value("${xxl.job.executor.logpath}")
        private String logPath;
    
        @Value("${xxl.job.executor.logretentiondays}")
        private int logRetentionDays;
    
    
        @Bean
        public XxlJobSpringExecutor xxlJobExecutor() {
            log.info(">>>>>>>>>>> xxl-job config init.");
            XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
            xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
            xxlJobSpringExecutor.setAppname(appname);
            xxlJobSpringExecutor.setAddress(address);
            xxlJobSpringExecutor.setIp(ip);
            xxlJobSpringExecutor.setPort(port);
            xxlJobSpringExecutor.setAccessToken(accessToken);
            xxlJobSpringExecutor.setLogPath(logPath);
            xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
            return xxlJobSpringExecutor;
        }
    }
  4. 配置执行器

    @SpringBootApplication
    public class CoffeeApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(CoffeeApplication.class, args);
        }
    
        @XxlJob("boilWater")
        public ReturnT<String> boilWater(String param) throws Exception {
            XxlJobLogger.log("java, Hello World~~~");
            System.out.println("123132");
            return ReturnT.SUCCESS;
        }
    
    }
  5. 在管理页面新增执行器

    AppName: coffee
    名称: 咖啡执行器
    注册方式: 自动注册
    image.png

  6. 在管理页面新增任务

    执行器: 咖啡执行器
    运行模式: BEAN
    任务描述: 烧水
    Cron: 0/5 ? *
    JobHandler: boilWater
    负责人: 随便填
    image.png

  7. 执行

    管理页面保存任务后,在操作按钮选执行一次
    image.png

    在coffee项目控制台可以看到日志输出


DeepWellice
1 声望0 粉丝