✅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 ");
    }
}    
相关推荐
老朋友此林3 小时前
MongoDB GEO 项目场景 ms-scope 实战
java·数据库·spring boot·mongodb
豆沙沙包?5 小时前
2025年--Lc165--H637.二叉树的层平均值(二叉树的层序遍历)--Java版
java·开发语言
迎風吹頭髮5 小时前
UNIX下C语言编程与实践40-UNIX 全局跳转:setjmp 与 longjmp 函数的使用与注意事项
java·c语言·unix
春风霓裳5 小时前
maven-setting配置
java·maven
小蒜学长5 小时前
springboot二手儿童绘本交易系统设计与实现(代码+数据库+LW)
java·开发语言·spring boot·后端
wangwangmoon_light7 小时前
0.0 编码基础模板
java·数据结构·算法
Terio_my7 小时前
Spring Boot 热部署配置与自定义排除项
java·spring boot·后端
JAVA学习通8 小时前
微服务项目->在线oj系统(Java-Spring)--C端用户(超详细)
java·开发语言·spring