感谢于以恒提供本节教程

目标

通过本章节介绍可以编写定时任务方法,并运行

说明

XXL-JOB是一个中心化的任务调度引擎,由各个执行器启动时主动向调度中心进行任务注册。

操作

1. pom.xml引入依赖

<dependency>
    <groupId>cn.flyrise</groupId>
    <artifactId>pai-common-job</artifactId>
</dependency>

2. 启用执行器配置

@EnablePaiJobExecutor 用于启用执行器配置。

@SpringBootApplication
@EnablePaiJobExecutor
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }

}

3. 编写任务逻辑

@Component
public class TestJob {

    @XxlJob("test1")
    @XxlJobTask(desc = "测试任务1,1分钟执行一次", cron = "0 0/1 * * * ?", author = "Joe")
    public ReturnT<String> test1(String param) {
        System.out.println("test1 >>> no param");
        return ReturnT.SUCCESS;
    }

    @XxlJob("test2")
    @XxlJobTask(desc = "测试任务2,5分钟执行一次", cron = "0 0/5 * * * ?", author = "Joe", param = "{\"name\":\"David\"}", childs = "test1")
    public ReturnT<String> test2(String param) {
        System.out.println("test2 >>>" + param);
        return ReturnT.SUCCESS;
    }

    @XxlJob("test3")
    @XxlJobTask(desc = "测试任务3,5分钟执行一次", cron = "0 0/5 * * * ?", author = "Joe", param = "{\"name\":\"David\"}", childs = {"test1", "test2"})
    public ReturnT<String> test3(String param) {
        System.out.println("test3 >>>" + param);
        return ReturnT.SUCCESS;
    }
}

4. 增加配置

放到Nacos配置
xxl.job.executor.appname 和 xxl.job.executor.title 必填 且去掉注释

xxl:
  job:
    admin:
      #本地建议把addresses清空,不注册到调度中心,云端调度中心也不能调度到本地
      #此地址是云端服务注册地址,本地使用https://pai.flyrise.cn/xxl-job-admin注册执行器,云端不要使用域名,可能出现在同一节点访问不通
      addresses: http://xxl-job-admin:8080/xxl-job-admin
    accessToken:
    executor:
      appname: #  一般为工程代码
      title: # 执行器名称 可以是工程中文名
      address:
      ip:
      port: 9999
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 30

5. 修改Dockerfile

EXPOSE 增加9999端口

EXPOSE 8080 9999

6. 本地调试

本地仅支持注册执行器和任务(addresses需配成域名)
注册的注解使用只要按规范使用就一定会注册上去,可以看日志有没有提示注册成功

c.f.job.config.JobHandlerRegistrar : >>>>>>>>>>> 执行器pai-XXXX注册成功,共发现n个任务

  • 本地测试方式1:使用junit
  • 本地测试方式2:自定义一个Controller去调用, 并配置免鉴权白名单,因为调度器是不具备获取用户信息的

7.进入XXLJOB任务调试中心

进入系统可查看任务执行情况,执行日志等
账号需要研发提供
地址:https://pai.flyrise.cn/xxl-job-admin

备注

1、本地开发环境不建议把任务注册到任务调度中心,可以通过配置设定。
2、如果同一工程在不同地方运行,则按第一个注册到任务调度中心进行执行。
3、工程没停止会一直调度。工程停止过一会儿任务调度中心会在执行器列表删除任务

文档更新时间: 2023-02-28 10:13   作者:欧阳少海