奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!

为什么使用

关于定时任务,各种框架层次不穷,但通过对比最终一句话总结:xxl-job 配置更简单,且功能更强大。所以这就是我们使用它的原因,而接下来以快速上手为例,不做太多其他功能讲解,只为快速使用开发

开始工作

工程结构

  • xxl-job-admin:可以看作管理各个任务的管理器,类似于微服务中的Nacos(服务注册中心)
  • xxl-job-core :公共依赖部分 (暂时忽略)
  • xxl-job-executor-samples :该模块下存放着俩个可以直接运行的模板
xxl-job-executor-sample-frameless:传统的执行程序
xxl-job-executor-sample-springboot:整合了 SpringBoot 的程序(推荐)

接下来我们以整合了 SpringBoot 的模板中进行操作,主要操作的文件如图所示

奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!_第1张图片

如何编写

这里我们主要讲解 Bean 模式的编写,该模式可以通过 @XxlJob("任务名称") 将每个自定义方法变成我们需要执行的任务,有点类似于 MVC 中的 @RequestMapping 将每个方法变成对应前端请求的控制器一样。

@Component
public class SampleXxlJob {
    int time = 0;  //记录执行次数
    
    //定义一个名为 TaskDemo 的定时任务
    @XxlJob("TaskDemo")
    public void TaskDemo() throws Exception {
        // XxlJobHelper.log 方法可以将方法中的内容输出到前台日志进行查看
        System.out.println("TaskDemo 开始执行第" + time + "次"); //控制台输出
        XxlJobHelper.log("TaskDemo 开始执行第" + time + "次");  //日志输出
        System.out.println("----------------------------------------");
        time++;
    }
}

进入后台

  • 首先进入到 xxl-job-admin 模块下更改 application.properties 文件中数据库地址的配置内容 (注意这里要链接运行过 tables_xxl_job.sql 文件,或者存在该文件中所创建的表的数据库)
### xxl-job, datasource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!_第2张图片

  • <运行报表> 中,它会记录配置好的任务个数,不管启动没启动
  • 点击 <任务管理>,可以看到有一个默认的任务配置,点击 <新增> 按钮,将我们自己编写的任务配置进去,具体配置如图所示
    奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!_第3张图片
    特别强调,JobHandle 中填写的是我们在 @XxlJob 注解中所对应的值,用来确定我们想要调用的方法, 红色的为必选项,其他的有就填写,没有就默认
    其中 Cron 是一种专门设置时间的表达式,大家感兴趣可以学一学,也可以直接点击按照里面的选项进行选择,添加后就会多一个定时任务

启动定时任务

  • 进入到刚刚我们编写的 xxl-job-executor-sample-springboot 模块,启动工程。
  • 进入到后台,点击 <操作>,如果点击 <启动一次>,那么编写的方法只会执行一次,且我们设置的 Cron 时间条件也会失效,点击 <启动> 则按照我们配置好的运行

控制台结果如图所示

奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!_第4张图片

  • 点击 <调度日志> 可以看到任务每执行一次就会生成一个日志记录,点击 <操作> 再点击 <执行日志> 可以看到我们输入到日志当中的内容,特别要说明的是,如果我们的程序出现异常,异常信息将输出到日志当中,并不会返回到控制台。 这个是默认的,我们并没有进行配置
  • 日志内容如图所示

在这里插入图片描述

这就是一个简单的基于 XXL-JOB 的定时示例,更多详细配置大家可以看官网,文档写的非常清楚

我是 Haoo ,编程界的沈腾,撰写有趣的文章。
如果这篇文章帮助到你,请收藏⭐点赞加关注,跟踪不迷路(◡‿◡)

你可能感兴趣的:(奶爸级教学!XXL-JOB 分布式任务调度框架,轻松上手!)