XXL-job 简记

[TOC]

任务调度

项目配置

spring boot 应用配置:

1
2
server.port=7888
nacos.config.server-addr=192.168.200.17:20002

配置中心添加以下配置:

1
2
3
4
5
6
7
8
# admin 地址
xxl.job.admin.addresses=http://192.168.200.17:20001/xxl-job
# 应用名
xxl.job.executor.appname=job-test
# 端口
xxl.job.executor.port=9999
# 日志保留天数
xxl.job.executor.logretentiondays=30

编码:配置 xxl-job

创建一个 configuration 类,其返回执行器实例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Configuration
public class XxlJobConfig {
    private static final Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);

    @NacosValue(value = "${xxl.job.admin.addresses}", autoRefreshed = true)
    String adminAddresses;

    @NacosValue(value = "${xxl.job.executor.appname}", autoRefreshed = true)
    String appName;

    @NacosValue(value = "${xxl.job.executor.port}", autoRefreshed = true)
    int port;

    @NacosValue(value = "${xxl.job.executor.logretentiondays}", autoRefreshed = true)
    int daysCount;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        logger.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setLogRetentionDays(daysCount);
        return xxlJobSpringExecutor;
    }
}

main:

1
2
3
4
5
6
7
@SpringBootApplication
@NacosPropertySource(dataId = "job_test", groupId = "demo")
public class JobtestApplication {
    public static void main(String[] args) {
        SpringApplication.run(JobtestApplication.class, args);
    }
}

创建任务

java GLUE 模式

先运行 job-executor,日志输出如下表示执行器启动成功:

添加执行器:

添加完执行器后,需要验证执行器是否已注册,有两种方法:

  1. 在“执行器管理”界面,可以查看 online 机器:

  2. 执行器运行日志中,会输出注册成功的日志:

新增 glue 任务:

点击该任务的 GLUE_IDE 按钮,进入代码编辑器,可以看到默认代码功能为输出 XXL-JOB, Hello World.

编辑完成后,在任务管理中启动这个定时任务:

之后可在调度日志面板查看任务执行日志:

bean 模式(@XxlJob 注解形式)

新增 JobTest 类,添加以下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
@Component
public class JobTest {
    private static final Logger logger = LoggerFactory.getLogger(JobTest.class);

    @XxlJob(value = "jobHandler01")
    public ReturnT<String> jobHandler01(String param) {
        XxlJobLogger.log("Hi xxl-job!");
        logger.info("job execute success.");
        return ReturnT.SUCCESS;
    }
}

在任务管理面板添加 jobHandler01 这个 bean 形式的任务:

重启 Java 应用,并在任务管理面板启动刚才新增的任务,job-executor 控制台输出如下:

可在管理面板的调度日志-执行日志中,查看 xxl-job 输出日志:

运行报表

在运行报表面板,可以查看报表:

加载评论