XXL-JOB:
官网文档地址:分布式任务调度平台XXL-JOB
GitHub地址:https://github.com/xuxueli/xxl-job
Gitee地址:https://gitee.com/xuxueli0323/xxl-job
-  拉取代码,首先执行一下doc/db下的sql文件 tables_xxl_job.sql 建立数据库以及相关表。 
-  在xxl-job-admin 下的 application.properties 文件中修改一下 数据库连接配置 ,端口冲突也可以改一下端口 
-  在自己的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";
    }
}
- 启动xxl-job xxl-job-admin 下的启动类 XxlJobAdminApplication,打开http://localhost:8099/xxl-job-admin/ 进入任务调用中心首页。 
- 在执行器管理中,新增执行器:
 AppName:是配置文件中的 xxl.job.executor.appname=xxl-job-executor-sample
 名称:展示在页面上的名称
 机器地址:如果是手动录入的话,就是IPV4的地址ip:端口号
  
- 配置任务管理:新增任务
 JobHandler 是 @XxlJob(“jobDemo”) 中的值
  
 7.点击操作 - 执行一次
  
 8.查看运行结果

在项目启动的时候曾经遇到一个问题:
Exception in thread “Thread-12” java.net.BindException: Address already in use: bind

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
















![[LeetCode周赛复盘] 第 102 场双周赛20230415](https://img-blog.csdnimg.cn/79f5b2b669354d7c8bdad400c5e70b6d.png)


