✅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 ");
    }
}    
相关推荐
小兔崽子去哪了22 分钟前
Java 自动化部署
java·后端
ma_king28 分钟前
入门 java 和 数据库
java·数据库·后端
后端AI实验室35 分钟前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
码路飞5 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing5 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven977 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德18 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆20 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌1 天前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊1 天前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端