泽兴芝士网

一站式 IT 编程学习资源平台

详细介绍一下Spring Boot中如何集成XXL-JOB?

在传统的调度任务中,随着系统复杂的增加,往往会无法满足高效、可靠、可扩展的系统需求。XXL-JOB正是这样一款可以在分布式场景下调度任务、支持通过简单高效的方式来创建、管理分配任务的分布式任务调度平台。XXL-JOB的设计简单易用,并且能够与现有系统实现高效快速的集成,还支持了各种的业务场景需求,并且是在一些中小型企业项目中的到了广泛的使用。

下面我们就来介绍如何在Spring Boot中整合XXL-JOB。

搭建XXL-JOB调度中心(Admin)

这里我们可以通过Docker来搭建一个XXL-JOB Admin服务。如下所示。

docker run -d -p 8080:8080 --name xxl-job-admin --restart always \
  -e XXL_JOB_ADMIN_WEB_PORT=8080 \
  -e XXL_JOB_ADMIN_ADDRESS=http://127.0.0.1:8080 \
  --link mysql:mysql \
  xuxueli/xxl-job-admin

这样我们就可以启动了一个XXL-JOB Admin 服务,并监听在本地8080端口。我们可以通过http://localhost:8080访问调度中心。

在XXL-JOB Admin中我们需要对人物调度数据进行持久化的存储,所以需要连接MySQL数据并且在数据库中添加对应的表结构。

CREATE DATABASE xxl_job;

通过执行xxl-job-admin项目中的SQL脚本来初始化数据库,这个脚本我们可以从XXL-JOB GitHub 仓库中得到,或者是通过Docker启动项目的时候这个数据库会自动创建。

添加依赖

接下来,我们就可以在项目的POM文件中添加XXL-JOB的依赖配置,如下所示。


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
    
        com.xxl.job
        xxl-job-core
        2.3.0 
    
    
    
    
        org.springframework.boot
        spring-boot-starter-logging
    

然后接下来就是在Spring Boot项目的配置文件中添加与XXL-JOB服务的连接配置信息,如下所实施。

xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin  # 调度中心地址
xxl.job.executor.appname=xxl-job-executor-springboot  # 执行器名称
xxl.job.executor.ip=127.0.0.1  # 执行器的IP
xxl.job.executor.port=9999  # 执行器端口
xxl.job.executor.logpath=/data/applogs/xxl-job  # 执行日志路径
xxl.job.executor.logretentiondays=30  # 日志保留天数

XXL-JOB类配置

根据上面的配置项的内容,我们需要创建对应的配置类。

@Configuration
public class XxlJobConfig {

    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
    
    @Value("${xxl.job.executor.appname}")
    private String appName;
    
    @Value("${xxl.job.executor.ip}")
    private String executorIp;
    
    @Value("${xxl.job.executor.port}")
    private int executorPort;
    
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
    
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;
    
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appName);
        xxlJobSpringExecutor.setIp(executorIp);
        xxlJobSpringExecutor.setPort(executorPort);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }
}

编写执行器类

配置完成之后,我们就可以通过@XxlJob 注解来标识一个任务执行器的类,如下所示。

@Component
public class MyJobHandler {

    @XxlJob("simpleJobHandler")
    public void simpleJobHandler() throws Exception {
        System.out.println("XXL-JOB 任务执行中...");
        // 模拟任务执行逻辑
        Thread.sleep(2000);
        System.out.println("任务执行完毕");
    }
}

在上面的代码中simpleJobHandler是任务的名称,调度中心会根据这个名称来调度任务。而@XxlJob注解则是用来标识这个方法为需要调用的任务执行方法。

配置任务调度

我们可以在调度配置中心,创建一个调度任务操作,然后可以配置好任务执行的周期以及任务执行的条件,或者是我们在需要的时候可以通过手动的方式来触发定时任务操作。

总结

到这里,我们就完成了Spring Boot应用和XXL-JOB执行器的集成,通过XXL-JOB可以轻松实现分布式任务调度,管理和执行任务。在实际场景中,我们可以根据业务需求来对XXL-JOB操作进行进一步的扩展和优化。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言