✅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 ");
    }
}    
相关推荐
洋不写bug1 分钟前
链表补充练习,双链表的模拟实现
java·数据结构·链表·双链表·底层实现
后台模板学习5 分钟前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
秋名RG7 分钟前
2026/6/15 系统故障复盘与整改方案
java·架构
今天要早睡_9 分钟前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
南讯股份Nascent12 分钟前
2026年CRM技术选型观察:当“数据打通“成为第一需求,电商CRM的架构价值在哪里
java·大数据·用户运营
心易行者18 分钟前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
霸道流氓气质1 小时前
Spring AI 技术细节:VectorStore 多库统一抽象
java·人工智能·spring
今天AI了吗1 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
学长毕业设计1 小时前
基于SpringBoot的健康食谱管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
珍珠先生1 小时前
P10 · 缺 MySQL 驱动 jar:ClassNotFoundException: com.mysql.cj.jdbc.Driver
java