SpringBoot整合XXL-JOB

XXL-JOB:

官网文档地址:分布式任务调度平台XXL-JOB

GitHub地址:https://github.com/xuxueli/xxl-job

Gitee地址:https://gitee.com/xuxueli0323/xxl-job

  1. 拉取代码,首先执行一下doc/db下的sql文件 tables_xxl_job.sql 建立数据库以及相关表。

  2. 在xxl-job-admin 下的 application.properties 文件中修改一下 数据库连接配置 ,端口冲突也可以改一下端口

  3. 在自己的SpringBoot项目中进行以下操作:

在pom中引入依赖

		<dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.3.0</version>
        </dependency>

配置application.yml

xxl:
    job:
        admin:
            # xxl-job后台管理界面的地址
            addresses: http://127.0.0.1:8099/xxl-job-admin
        executor:
            # 此执行器的名称
            appname: xxl-job-executor-sample
            ip:
            # 此执行器的端口
            port: 9999
            # 此执行器的日志存放路径
            logpath: /data/applogs/xxl-job/jobhandler
            # 此执行器的日志保存时间
            logretentiondays: 30
        accessToken: default_token #调度中心通讯TOKEN [选填]:非空时启用

XxlJobConfig配置类

import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


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

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @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.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);

        return xxlJobSpringExecutor;
    }

}

job类

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

@Component
public class DemoJobHandler {

    @XxlJob("jobDemo")
    public String jobDemo() throws Exception {

        String param = XxlJobHelper.getJobParam();

        System.out.println("excuting......" + param);
        Thread.sleep(2000);

        return "SUCCESS";
    }
}
  1. 启动xxl-job xxl-job-admin 下的启动类 XxlJobAdminApplication,打开http://localhost:8099/xxl-job-admin/ 进入任务调用中心首页。SpringBoot整合XXL-JOB_第1张图片
  2. 在执行器管理中,新增执行器:
    AppName:是配置文件中的 xxl.job.executor.appname=xxl-job-executor-sample
    名称:展示在页面上的名称
    机器地址:如果是手动录入的话,就是IPV4的地址ip:端口号
    SpringBoot整合XXL-JOB_第2张图片
  3. 配置任务管理:新增任务
    JobHandler 是 @XxlJob(“jobDemo”) 中的值
    SpringBoot整合XXL-JOB_第3张图片
    7.点击操作 - 执行一次
    SpringBoot整合XXL-JOB_第4张图片
    8.查看运行结果

SpringBoot整合XXL-JOB_第5张图片

在项目启动的时候曾经遇到一个问题:

Exception in thread “Thread-12” java.net.BindException: Address already in use: bind

SpringBoot整合XXL-JOB_第6张图片
本以为是端口被占用,其实并不是;
在高版本的xxl-job中(例如我引用的就是2.3.0)
在上图的@Bean(initMethod = “start”, destroyMethod = “destroy”)这里;
直接修改成@Bean即可。

你可能感兴趣的:(spring,boot,java,后端)