✅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 ");
    }
}    
相关推荐
wang09072 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java2 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
不知名的老吴3 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver3 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89824 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
马士兵教育6 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
snow@li6 小时前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD6 小时前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring
zfoo-framework7 小时前
[修改代码使用]codex官方app中使用中转(不需要cc-switch) 1.config.toml 2.sk方式登录
java
逍遥德7 小时前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt