一、前言

废话就不多说了,介绍Xxl-Job的网上已经有很多,本文就不多加复制粘贴了,直接步入第二步。(PS:本文包括Xxl-Job分布式定时任务调度中心的搭建,以及SpringBoot集成XxlJob的全过程。如果不想了解搭建的小伙伴可以直接调到第三步。)

二、Xxl-Job分布式定时任务调度中心搭建

2.1 下载

源码地址:https://github.com/xuxueli/xxl-job
我使用的2.3.0版本的,这是目前最新的版本。
在这里插入图片描述
下载好后,我们使用IDEA打开,可以看到如图的几个模块:
在这里插入图片描述

其中xxl-job-admin是我们的后台管理系统,这也是我们主要查看xxl-job日志的地方;xxl-job-core则是核心core文件,我们项目中导入依赖就主要导入这个文件;最后是xxl-job-executor-samples这里放了各个不同版本执行器的源码。

2.2 数据库配置

打开至/xxl-job/doc/db目录下,可以看到xxl-job需要的一些数据库初始化脚本。
在这里插入图片描述
我们需要在我们的数据库运行一下这些sql文件,运行完成后,会产生如下的库与对应的表
在这里插入图片描述

2.3 修改配置文件

此处需要修改xxl-job-admin项目下的application.properties文件,主要是修改数据库相关配置:
在这里插入图片描述
将此处修改为自己的数据库配置即可。其他配置根据自己需要更改。顺带一句,笔者此处还将端口8080改为了9080。

2.4 启动项目

此时我们准备工作已经做完,直接启动XxlJobAdminApplication项目即可。
注意:此处启动如果是Mac的用户可能会报错,错误信息如:
在这里插入图片描述
这里只需要将xxl-job/xxl-job-admin/src/main/resources目录下的logback.xml文件中的

<property name="log.path" value="/data/applogs/xxl-job/xxl-job-admin.log"/>

修改为:

<property name="log.path" value="./data/applogs/xxl-job/xxl-job-admin.log"/>

即可。

2.5 访问

在浏览器输入:http://127.0.0.1:9080/xxl-job-admin 即可成功访问。
用户密码分别为:admin/123456
登陆成功后可以看到此页面即为搭建成功。
在这里插入图片描述

三、SpringBoot集成Xxl-Job

3.1 导入依赖

	<dependency>
		<groupId>com.xuxueli</groupId>
		<artifactId>xxl-job-core</artifactId>
		<version>${xxl-job.version}</version>
	</dependency>

3.2 添加配置文件

xxl:
  job:
    admin:
      # xxl-job后台管理界面的地址
      addresses: http://127.0.0.1:8080/xxl-job-admin
    executor:
      # 此执行器的名称
      appname: first-study
      # 此执行器的端口
      port: 38801
      # 此执行器的日志存放路径
      logpath: logs/xxl-job/first-study
      # 此执行器的日志保存时间
      logretentiondays: 7

3.3 添加配置类

XxlJobProperties:

@Configuration
@Data
public class XxlJobProperties {

    @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;
}

BeanConfig:

@Configuration
@RequiredArgsConstructor
public class BeanConfig {

    private final XxlJobProperties xxlJobProperties;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(xxlJobProperties.getAdminAddresses());
        xxlJobSpringExecutor.setAppname(xxlJobProperties.getAppname());
//        xxlJobSpringExecutor.setAddress(address);
//        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(xxlJobProperties.getPort());
//        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(xxlJobProperties.getLogPath());
        xxlJobSpringExecutor.setLogRetentionDays(xxlJobProperties.getLogRetentionDays());

        return xxlJobSpringExecutor;
    }
}

并在启动类上添加注解@EnableScheduling。

3.4 添加xxl-job测试

@Slf4j
@Component
@RequiredArgsConstructor
public class XxlJobTest {
    
    @XxlJob("xxlJobTest")
    public ReturnT<String> xxlJobTest(String date) {
        log.info("---------xxlJobTest定时任务执行成功--------");
        return ReturnT.SUCCESS;
    }

}

3.5 xxl-job-admin添加执行器

回到 http://127.0.0.1:9080/xxl-job-admin/ 界面。
点击执行器管理 -> 新增
在这里插入图片描述
此处的AppName填你项目中配置的xxl.job.executor.appname名称。选择自动注册,保存即可。

3.6 添加任务

点击任务管理 -> 点击执行器下拉框
在这里插入图片描述
选择刚刚添加的执行器,然后点击“新增”按钮,新增任务:
在这里插入图片描述
注意,此处的JobHandler填@XxlJob注解后面的值。填好点击保存即可。就可以看到我们已经有一条任务了,此时点击“操作”,然后点击“启动”,定时任务就运行了。笔者这里是每分钟运行一次。

3.7 测试

此时启动我们的测试项目,会发现打印的启动日志已经注册到xxl-job。然后就能看到已经成功执行定时任务并打印日志。
在这里插入图片描述
在这里插入图片描述

到此,搭建到集成整个流程就完毕了。当然xxl-job远不止这点功能,对其他扩展信息感兴趣的小伙伴可以自行上网搜索,也可以访问Xxl-Job官方文档:https://www.xuxueli.com/xxl-job/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐