• springboot整合xxl-job详解(采坑记录)


    关于xxl-job

    在我看来,总体可以分为三大块:

    1. 调度中心
    2. 执行器
    3. 配置定时任务

    调度中心

    简单来讲就是 xxl-job-admin那个模块,配置:

    • 从doc里面取出xxl-job.sql的脚本文件,创建对应的数据库。
    • 进行配置文件的配置,如下图
    • 进行日志存放位置的修改
    • 然后idea打包之后就能当作调度中心运行了
    • 访问地址:ip:port/xxl-job-admin 默认的账号密码:admin/123456 注意:你进去后修改密码,有些浏览器就算你账号密码对了,可能还是会显示密码错误,默认使用谷歌浏览器。

    执行器

    就是我们使用springboot整合xxl-job需要编写的代码。 配置过程:

    1. 引入核心依赖,这里使用的是2.2.0
    1. <!-- xxl-job -->
    2. <dependency>
    3. <groupId>com.xuxueli</groupId>
    4. <artifactId>xxl-job-core</artifactId>
    5. <version>2.2.0</version>
    6. </dependency>

    注意:这里的版本与你xxl-job-admin的版本保持一致。

    1. 配置文件
    1. xxl:
    2. job:
    3. admin:
    4. addresses: http://127.0.0.1:8106/xxl-job-admin
    5. executor:
    6. appname: testJob #xxljob配置的执行器名称,
    7. ip: #执行器IP,默认为空表示自动获取IP
    8. port: 9988 #xxljob配置的端口号,默认为9999
    9. logpath: ./data/xxl-job/jobhandler #执行器运行日志文件存储磁盘路径
    10. logretentiondays: -1 #调度中心日志表数据保存天数,过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能
    11. accessToken: #调度中心通讯TOKEN [选填]:非空时启用

    这里ip的获取,为空可以自动获取,你也可以在调度中心管理页面进行手动配置。

    如果需要使用accessToken,那么就需要在xxl-job-admin的配置文件里进行配置对应。

    1. 编写配置类
    1. import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.springframework.beans.factory.annotation.Value;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. /**
    7. * @DESC xxl-job配置类
    8. * @AUTHOR lh
    9. * @DATE 2022/6/23 11:41
    10. */
    11. @Configuration
    12. @Slf4j
    13. public class XxlJobConfig {
    14. @Value("${xxl.job.admin.addresses}")
    15. private String adminAddresses;
    16. @Value("${xxl.job.executor.appname}")
    17. private String appName;
    18. @Value("${xxl.job.executor.ip}")
    19. private String ip;
    20. @Value("${xxl.job.executor.port}")
    21. private int port;
    22. @Value("${xxl.job.accessToken}")
    23. private String accessToken;
    24. @Value("${xxl.job.executor.logpath}")
    25. private String logPath;
    26. @Value("${xxl.job.executor.logretentiondays}")
    27. private int logRetentionDays;
    28. @Bean
    29. public XxlJobSpringExecutor xxlJobExecutor() {
    30. XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
    31. xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
    32. xxlJobSpringExecutor.setAppname(appName);
    33. xxlJobSpringExecutor.setIp(ip);
    34. xxlJobSpringExecutor.setPort(port);
    35. xxlJobSpringExecutor.setAccessToken(accessToken);
    36. xxlJobSpringExecutor.setLogPath(logPath);
    37. xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
    38. return xxlJobSpringExecutor;
    39. }
    40. }

    这里需要注意,高版本与低版本的配置类略有不同。

    1. 编写测试类
    1. import com.xxl.job.core.biz.model.ReturnT;
    2. import com.xxl.job.core.handler.annotation.XxlJob;
    3. import lombok.extern.slf4j.Slf4j;
    4. import org.springframework.stereotype.Component;
    5. /**
    6. * @DESC 测试定时任务代码
    7. * @AUTHOR lh
    8. * @DATE 2022/6/23 11:52
    9. */
    10. @Slf4j
    11. @Component
    12. public class TestJob {
    13. @XxlJob("xxlJobTest")
    14. public ReturnT<String> xxlJobTest(String date) {
    15. log.info("---------xxlJobTest定时任务执行成功--------");
    16. return ReturnT.SUCCESS;
    17. }
    18. }

    注意:2.2.0版本,已经不支持@JobHandler注解了。 这里的XxlJob与调度中心的定时任务配置相对应。

    原文链接:
    https://www.cnblogs.com/l12138h/p/16405300.html

  • 相关阅读:
    【遥感卫星数据】Landsat数据Collection1和Collection2区别
    消费行业数字化升级成 “刚需”,weiit 新零售 SaaS 为企业赋能!
    一、webrtc编译容易遇到的问题
    Java中的UDP通信(网络编程 一)
    linux服务-配置ntp时间服务
    【老生谈算法】matlab实现基本遗传算法应用实例——遗传算法
    机器学习-面经(part4、决策树)
    聊聊如何用 Redis 实现分布式锁?
    代码随想录训练营二刷第三十九天 | 62.不同路径 63. 不同路径 II
    保卫城市消费券安全,从这些做起
  • 原文地址:https://blog.csdn.net/aa119101/article/details/125490970