✅XXL-JOB的基本使用

✅本地运行方式

✅1.下载源码

📎xxl-job-2.4.1.zip

✅2.执行SQL脚本

✅3.配置数据库、用户名、密码

✅4.调度中心

启动

访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

默认登录账号 "admin/123456", 登录后运行界面如下图所示。

✅5.项目依赖

复制代码
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.1</version>
</dependency>

✅6.Yaml

复制代码
xxl:
  job:
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin
    accessToken: default_token
    executor:
      appname: jc-club-subjcet
      address:
      ip:  127.0.0.1
      port: 9999
      logpath: /data/applogs/xxl-job/jobhandler
      logretentiondays: 30

✅7.执行器

复制代码
@Component
@Slf4j
public class SyncLikedJob {

    @Resource
    private SubjectLikedDomainService subjectLikedDomainService;




    @XxlJob("syncLikedJobHandler")
    public void syncLikedJobHandler() throws Exception {
        XxlJobHelper.log("syncLikedJobHandler.start");
        try {
            subjectLikedDomainService.syncLiked();
            log.info("123456");

        }catch (Exception e){
            XxlJobHelper.log("syncLikedJobHandler.error"+ e.getMessage());
        }


    }
}

✅Docker方式

✅下载镜像

复制代码
docker pull xuxueli/xxl-job-admin:2.4.0

✅执行SQL脚本

doc/db/tables_xxl_job.sql · 许雪里/xxl-job - Gitee.com

✅创建容器并运行

复制代码
docker run -d \
  --name xxl-job-admin \
  -e PARAMS=" \
    --spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
  " \
  -p 8080:8080 \
  -v /tmp:/data/applogs \
  xuxueli/xxl-job-admin:2.4.0

✅项目依赖

复制代码
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.4.0</version>
</dependency>

✅Yaml

复制代码
xxl:
  job:
    # 调度中心地址(多个用逗号分隔)
    admin:
      addresses: http://127.0.0.1:8080/xxl-job-admin //容器地址
      accessToken: default_token   //不设置就是默认    要设置在docker run的时候设置
      timeout: 3  //超时

    # 执行器配置
    executor:
      # 执行器唯一标识(AppName),用于分组和注册
      appname: xxl-job-executor-sample   //

      # 手动指定注册地址(可选,用于容器化部署)
      address:

      # 执行器IP(为空自动获取) 
      ip:

      # 执行器端口(<=0 表示自动获取)
      port: 9999

      # 任务日志存储路径
      logpath: /data/applogs/xxl-job/jobhandler

      # 日志保留天数(>=3生效,-1表示不清理)
      logretentiondays: 30

xxl:
  job:
    admin:
      addresses: https://{}/xxl-job-admin
    executor:
      appname: coefficient  
      ip: 
      port: 9999
      logretentiondays: 30
      logpath: /data/applogs/xxl-job/jobhandler
      accessToken: aaPosyber@2025d

✅配置类

复制代码
@Configuration
public class XxlJobConfig {
    
    @Value("${xxl.job.admin.addresses}")
    private String addresses;
    
    @Value("${xxl.job.executor.appname}")
    private String appname;
    
    @Value("${xxl.job.executor.port}")
    private Integer port;
    
    @Value("${xxl.job.executor.logretentiondays}")
    private Integer logretentiondays;
    
    @Value("${xxl.job.executor.logpath}")
    private String logpath;
    
    @Value("${xxl.job.executor.accessToken}")
    private String accessToken;

    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(addresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(null);
        xxlJobSpringExecutor.setIp(null);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logpath);
        xxlJobSpringExecutor.setLogRetentionDays(logretentiondays);
        return xxlJobSpringExecutor;
    }
}

✅执行器

复制代码
@Slf4j
@Component
@RequiredArgsConstructor
public class LeaveJob {

    private final CelvService celvService;

    // private final CelvlaService celvLaService;

    private final CelvlcService celvLcService;

    @Value("${annualLeaveFlag:prod}")
    private String annualLeaveFlag;

    @Resource
    private final CeService ceService;

    //@Scheduled(cron = "0 01 14 * * *")
    @XxlJob("initCelvAndCelvsm")
    public void initLeaveBaseDataAsCelv() {
        log.info("---------------cronjob initLeaveBaseDataAsCelv start ");
        celvService.initCelvAndCelvsm(null);
        log.info("---------------cronjob initLeaveBaseDataAsCelv end ");
    }
}    
相关推荐
寒山李白10 分钟前
IDEA中如何配置Java类注释(Java类注释信息配置,如作者、备注、时间等)
java
我要添砖java12 分钟前
<JAVAEE> 多线程4-wait和notify方法
android·java·java-ee
Rysxt_21 分钟前
Spring Boot SPI 教程
java·数据库·sql
海边夕阳200621 分钟前
主流定时任务框架对比:Spring Task/Quartz/XXL-Job怎么选?
java·后端·spring·xxl-job·定时任务·job
q***985230 分钟前
VS Code 中如何运行Java SpringBoot的项目
java·开发语言·spring boot
帧栈40 分钟前
开发避坑指南(72):HttpHeaders 的add()方法和set()方法有什么区别?
java·spring·http
unclecss1 小时前
把 Spring Boot 的启动时间从 3 秒打到 30 毫秒,内存砍掉 80%,让 Java 在 Serverless 时代横着走
java·jvm·spring boot·serverless·graalvm
tuokuac1 小时前
@PathVariable与@RequestParam
java·spring
q***16081 小时前
Tomcat的server.xml配置详解
xml·java·tomcat
程序员西西1 小时前
SpringBoot整合Apache Spark实现一个简单的数据分析功能
java·后端