分布式定时任务Xxl_Job详细使用手册

看了很多网上的版本,思路描述的都不是很清晰,都只是几步操作就完成了,看效果,导致容易走入弯路(不排除是自己理解能力把),最开始以为是把admin模块集成到项目,后来测试了会,才明确是服务模块,无代码侵入,直接引用,少了很多思路明确分析,所以记录一下心得,方便后续上手

官方下载地址最新版:https://www.xuxueli.com/xxl-job/

下载项目结构示例图

下载项目结构如图所示,其实主要是启动admin模块

思路:类似于服务端。运行思路就是引入xxl-job-core包到需要的项目,配置好过后,就可以注册到admin服务中,通过自带的页面就可以看到对应定时任务

接下来开始操作:

第一步:在xxl-job-admin中配置自己的数据库

​ 导入sql文件: ./doc/db/tables_xxl_job.sql 到数据库

​ 有需要或者想尝试配置邮件接收异常信息可以配置 spring.mail.**

​ logback.xml中间改变日志配置路径,(可以自定义路径)

复制代码
<property name="log.path" value="./logs/xxl-job-admin.log"/>

​ 就可以启动admin模块了,访问http://192.168.0.177:8080/xxl-job-admin 即可看到页面

​ 默认用户名 :admin 密码: 123456

第二步: 配置客户端

​ 引入jar包

复制代码
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>最新版本</version>
        </dependency>

​ 上配置:

复制代码
xxl:
  job:
    admin:
      addresses: http://192.168.0.177:8080/xxl-job-admin   #服务器启动的 服务地址
    accessToken: default_token
    executor:
      # 执行器的应用名称
      appname: xxlJobTest
      # 执行器注册 [选填]:优先使用该配置作为注册地址
      address:
      # 执行器IP [选填]:默认为空表示自动获取IP
      ip:
      # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999
      port: 8081
      # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
      logpath: E:\\www\\ffw\\log
      #logpath: /data/logs/mls/job
      # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
      logretentiondays: 30

服务注入配置

复制代码
@Configuration  //是否开启xxl-job定时任务,注释掉 //@Configuration 则不开启定时任务
@Data
@Slf4j
public class XxlJobConfig {
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;

    @Value("${xxl.job.accessToken}")
    private String accessToken;

    @Value("${xxl.job.executor.appname}")
    private String appname;

    @Value("${xxl.job.executor.address}")
    private String address;

    @Value("${xxl.job.executor.ip}")
    private String ip;

    @Value("${xxl.job.executor.port}")
    private int port;

    @Value("${xxl.job.executor.logpath}")
    private String logPath;

    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;


    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobHelper.log(">>>>>>>>>>> xxl-job config init.>>>>>>>>>>>");
        System.out.println("=============== xxl-job config init.===============");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppname(appname);
        xxlJobSpringExecutor.setAddress(address);
        xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
        return xxlJobSpringExecutor;
    }

}

编写测试用例

复制代码
@Slf4j
@Component
public class XxlJobTest{

    @XxlJob(value = "xxlJobTest")
    public void xxlJobTest() {
        System.out.println("---------xxlJobTest定时任务执行成功--------");
    }
}

启动项目即可完成,看着一下表示启动成功

第三步:测试用例

​ 手动创建,选择bean注入模式

​

接下来就可以执行一次,看看效果

相关推荐
泡海椒2 分钟前
JQuick-Excel 项目定位与适用场景:声明式 Java Excel 的边界
java·开发语言·excel
AC赳赳老秦5 分钟前
财报附注表格精准提取:OpenClaw 从 PDF 年报附注挖掘隐藏明细,补齐财务分析维度
java·汇编·c++·python·青少年编程·deepseek·openclaw
箓维11 分钟前
线程的优缺点,与进程的关联和差异
java·服务器·笔记
曹牧13 分钟前
Spring MVC:@RequestMapping
java·spring·mvc
曹牧33 分钟前
Spring MVC : Controller 层URL划分
java·运维·服务器·前端
卓怡学长1 小时前
w203基于springboot钢材仓库管理系统的设计与实现
java·spring boot·spring·intellij-idea
sunburn-1 小时前
Java 排序算法详细教学:从冒泡排序到快速排序
java·开发语言·数据结构·ide·算法
我是小白呀1 小时前
编排还是事件协作?用 AcmeFlow 讲清企业 Workflow 的控制权
java·开发语言
深入云栈1 小时前
Netty 4.2.x 源码深度解析 (十四):KQueue 传输 —— macOS 高性能 IO 的 Netty 实现
java·后端
信誓旦旦的程序猿1 小时前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api