瞅一眼!就能学会的 XXL-JOB 分布式任务框架

补充:后面我又写了一篇《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 的模板中进行操作,主要操作的文件如图所示

在这里插入图片描述

如何编写

这里我们主要讲解 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-admin 模块,在浏览器中输入默认地址 http://localhost:8080/xxl-job-admin/toLogin
    用户名 admin (默认)
    密码 123456 (默认)

  • 主要导航功能如图所示 👇

在这里插入图片描述

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

启动定时任务

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

控制台结果如图所示

在这里插入图片描述

  • 点击 <调度日志> 可以看到任务每执行一次就会生成一个日志记录,点击 <操作> 再点击 <执行日志> 可以看到我们输入到日志当中的内容,特别要说明的是,如果我们的程序出现异常没有上抛而是进行了处理,异常信息将不会输出到日志当中,而 xxl-admin 控制后台将会认为任务执行正常,在任务执行结果当中显示正常。所以当有异常需要处理时一定要记得抛出,让框架感知到

  • 日志内容如图所示📕

在这里插入图片描述

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值