返回

从demo快速入门xxl-job源码分析

后端

正文:

一、简介

xxl-job是一款热门的分布式定时调度平台,由上海易立信推出的开源项目。其拥有可视化的web展示界面,使用起来非常简单便捷,且支持多种调度策略和丰富的功能。

二、安装与启动

  1. 安装:
git clone https://github.com/xuxueli/xxl-job.git
cd xxl-job
mvn clean install -Dmaven.test.skip=true
  1. 启动:
cd xxl-job-admin
nohup java -jar xxl-job-admin-2.1.1.jar > xxl-job-admin.log 2>&1 &
cd xxl-job-executor
nohup java -jar xxl-job-executor-2.1.1.jar > xxl-job-executor.log 2>&1 &

三、项目结构

xxl-job由多个模块组成,主要包括:

  • xxl-job-admin:管理控制台模块
  • xxl-job-executor:执行器模块
  • xxl-job-core:核心公共模块
  • xxl-job-glue:任务执行器Glue代码库

四、核心原理

xxl-job采用分布式架构,由管理控制台和多个执行器组成。管理控制台负责任务调度和监控,执行器负责执行任务。管理控制台和执行器通过HTTP接口进行通信。

五、调度策略

xxl-job支持多种调度策略,包括:

  • Cron表达式
  • 固定延迟
  • 固定速率
  • 上一次执行完成后延迟

六、任务执行

任务执行时,管理控制台会将任务信息发送给执行器,执行器根据任务信息执行任务。任务执行完毕后,执行器会将执行结果反馈给管理控制台。

七、任务监控

管理控制台提供可视化的任务监控界面,可以实时查看任务的状态、执行日志等信息。

八、代码结构分析

xxl-job的代码结构清晰,易于理解。主要模块如下:

  • xxl-job-admin:管理控制台模块,主要负责任务调度和监控。
  • xxl-job-executor:执行器模块,主要负责执行任务。
  • xxl-job-core:核心公共模块,提供了任务调度、任务执行、任务监控等核心功能。
  • xxl-job-glue:任务执行器Glue代码库,提供了各种语言的任务执行器实现。

九、使用示例

  1. 创建任务:
@XxlJob(value = "myJob", cron = "0/5 * * * * ?", shardingTotal = 10)
public class MyJobHandler implements IJobHandler {

    @Override
    public ReturnT<String> execute(String param) throws Exception {
        System.out.println("XXL-JOB, Hello World.");
        return ReturnT.SUCCESS;
    }

}
  1. 执行任务:
curl -X POST -H 'Content-Type: application/json' -d '{"jobHandler":"myJob","executorParam":""}' http://127.0.0.1:9333/jobinfo/run

十、总结

xxl-job是一款功能强大、使用简单的定时调度平台,其源码结构清晰,易于理解。通过对xxl-job源码的分析,可以更好地了解其原理,以便更好地进行定制化开发与改造。