一、前言

定时任务有很多种,有一些大的框架也有一些简单的实现。比如常见的:

小编也就知道这些,欢迎大佬补充哈!!

今天小编就以现在比较火的分布式定时任务xxl-job,优点比较轻量级,但是从21年到现在没有比较大的更新!现在最新的好像是2.4.0。

二、xxl-job介绍

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

它是美团大佬:许雪里开发出来的!

本篇以实践教学为主,介绍大家感兴趣可以去官方文档去看看!

xxl-job文档:https://www.xuxueli.com/xxl-job/

总体架构图:

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(1)

在这里插入图片描述

大家自行拉去最新代码即可

项目地址:https://gitee.com/xuxueli0323/xxl-job?_from=gitee_search

三、修改配置1. 运行sql文件

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(2)

在这里插入图片描述

导出到本地数据库:

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(3)

在这里插入图片描述

XXL-JOB调度模块基于自研调度组件并支持集群部署,调度数据库表说明如下:

2. 修改xxl-job-admin配置

小编修改了一下端口号:

server.port=8087

记得调整成自己的数据库密码:

spring.datasource.password=root

由于sql文件导入的直接是个数据库,不需要我们在调整数据库的名称!

3. 需修改xxl-job-executor-sample-springboot配置

小编这里修改了端口号:

server.port=8086

第11行:修改为admin的端口

xxl.job.admin.addresses=http://127.0.0.1:8087/xxl-job-admin

第22行:小编9999端口被占用,修改了一下端口

xxl.job.executor.port=9998

4. 添加自己的定时任务

@XxlJob("testJobHandler") public void testJobHandler() throws Exception { for (int i = 0; i < 5; i ) { XxlJobHelper.log("这是第" i 1 "条日志!"); System.out.println("这是第" i 1 "次看到我了!"); } System.out.println("定时任务结束!!"); }

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(4)

在这里插入图片描述

四、运行项目 1. 启动项目

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(5)

在这里插入图片描述

2. 登录

根据上一步的配置,我们直接端口号加服务名字进行访问:

http://localhost:8087/xxl-job-admin/

账号:admin密码:123456

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(6)

在这里插入图片描述

3. xxl-job的好处

自己写完的定时任务,可以交给这个管理,这样什么时候运行,定时任务的执行规则,都可以在可视化的界面进行管理和操作,更加的人性化!可以动态的修改cron表达式,还有日志执行情况,这是真的香啊!!

4. 查看执行器获取网址

默认已经把springboot整合上来了,如果大家是自己新建的模块可以新增一条,让管理器管理咱们自己项目的定时任务,也就是使用@XxlJob的任务!

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(7)

在这里插入图片描述

5. 新增任务管理

这里比较智能,一些基本的cron表达式都可以帮你写,非常的人性!!JobHandler:填@XxlJob里面的名字即可,小编这里是:@XxlJob("testJobHandler"),所以是testJobHandler

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(8)

在这里插入图片描述

6. 执行任务

我们这次执行一次,看看控制台是否打印记录,看看我们写的任务是否执行了!!

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(9)

在这里插入图片描述

任务参数随便输入,机器地址为:http://192.168.1.207:9998/,第4步查看的,也就是管理端的地址加端口!!

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(10)

在这里插入图片描述

7. 执行成功

我们看到方法成功被执行了!!

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(11)

在这里插入图片描述

8. 查看日志

spring boot 分布式部署(springboot整合xxl-job分布式定时任务)(12)

在这里插入图片描述

五、总结

大家看到我的日志还是有执行失败的,原因是开始端口被占用,没有注意,一直在测试,一直失败!!大家运行后一定看看控制台有没有报错,如果是java.net.BindException: Address already in use: bind那就是端口号被占用,换一个就行了!!也可以看看小编这篇文章,详细解决了这个问题!!

https://blog.csdn.net/qq_52423918/article/details/126155320


有缘人才可以看得到的哦!!!

https://wangzhenjun.xyz/

,