springboot整合xxl-job分布式定时任务【图文完整版】
一、前言
定时任务有很多种,有一些大的框架也有一些简单的实现。
比如常见的:
Timer和TimerTask Quartz XXL-JOB @Scheduled
小编也就知道这些,欢迎大佬补充哈!!
今天小编就以现在比较火的分布式定时任务 xxl-job
,优点比较轻量级,但是从21年到现在没有比较大的更新!
现在最新的好像是 2.4.0
。
二、xxl-job介绍
XXL-JOB
是一个 分布式任务调度平台
,其核心设计目标是开发迅速、学习简单、 轻量级
、易扩展。现已开放源代码并接入多家公司线上产品线, 开箱即用
。
它是美团大佬: 许雪里
开发出来的!
本篇以实践教学为主,介绍大家感兴趣可以去官方文档去看看!
xxl-job文档
总体架构图:
大家自行拉去最新代码即可:
项目地址
三、修改配置
1. 运行sql文件
导出到本地数据库:
XXL-JOB调度模块基于自研调度组件并支持集群部署,调度数据库表说明如下:
- xxl_job_lock:任务调度锁表;
- xxl_job_group:执行器信息表,维护任务执行器信息;
- xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
- xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
- xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
- xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
- xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
- xxl_job_user:系统用户表;
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("定时任务结束!!"); }
四、运行项目
1. 启动项目
2. 登录
根据上一步的配置,我们直接端口号加服务名字进行访问:
http://localhost:8087/xxl-job-admin/
账号: admin
密码: 123456
3. xxl-job的好处
自己写完的定时任务,可以交给这个管理,这样什么时候运行,定时任务的执行规则,都可以在可视化的界面进行管理和操作,更加的人性化!可以动态的修改 cron
表达式,还有日志执行情况,这是真的香啊!!
4. 查看执行器获取网址
默认已经把springboot整合上来了,如果大家是自己新建的模块可以新增一条,让管理器管理咱们自己项目的定时任务,也就是使用 @XxlJob
的任务!
5. 新增任务管理
这里比较智能,一些基本的 cron
表达式都可以帮你写,非常的人性!!
JobHandler:填 @XxlJob
里面的名字即可,小编这里是: @XxlJob("testJobHandler")
,所以是 testJobHandler
6. 执行任务
我们这次执行一次,看看控制台是否打印记录,看看我们写的任务是否执行了!!
任务参数随便输入,机器地址为: http://192.168.1.207:9998/
,第4步查看的,也就是管理端的地址加端口!!
7. 执行成功
我们看到方法成功被执行了!!
8. 查看日志
五、总结
大家看到我的日志还是有执行失败的,原因是开始端口被占用,没有注意,一直在测试,一直失败!!
大家运行后一定看看控制台有没有报错,如果是 java.net.BindException: Address already in use: bind
那就是端口号被占用,换一个就行了!!
springboot整合xxl-job分布式定时任务【图文完整版】相关推荐
- SpringBoot(46) 整合ShedLock实现分布式定时任务(redis版)
文章目录 一.前言 二.SpringBoot整合ShedLock 1.`pom.xml`中引入依赖 2.Shedlock配置类 3.测试数据定时任务 三.本文案例demo源码 一.前言 本文将基于sp ...
- springboot整合redis实现分布式锁思想
思路 所有响应获取锁的线程都先尝试往redis中创建一个缓存数据,所有线程的key必须相同.使用的是redis的setnx命令.就只有一个线程能够创建成功,创建成功的线程就成功获取锁. 没有获取锁的线 ...
- SpringBoot整合Quartz执行持久化定时任务
使用: 个人博客项目,定时刷新帖子排名用到了定时任务,在这里记录下来SpringBoot整合Quartz的基本使用,记录的同时也希望能帮助到大家. 1.什么是Quartz 官方介绍: Quartz是一 ...
- springboot整合curator实现分布式锁
理论篇: Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处 ...
- springboot整合curator实现分布式锁模拟抢购场景
文章目录 1.环境说明 2.maven依赖 3.代码实现 3.1.Redis 3.1.1.配置文件 3.1.2.redisTemplate配置 3.2.Curator 3.1.1.配置文件 3.1.2 ...
- springboot整合Hazelcast实现分布式缓存
世上无难事,只要肯放弃 前言 菜鸡来记录一下学习分布式缓存的过程. 说起这个缓存我立马就想到了当初学习计算机组成原理的时候学过的什么寄存器,高速缓冲,内存,磁盘,一级缓存,二级缓存,三级缓存之 ...
- 5分钟实现SpringBoot整合Dubbo构建分布式服务
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:jaycekon cnblogs.com/jaycekon/ ...
- 八十、 Springboot整合异步任务和定时任务
@Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 任务 异步任务 ...
- springboot整合redisson实现分布式锁
一.介绍Redisson Redisson是Redis官方推荐的Java版的Redis客户端(Jedis.letture也是官方推荐的java版本redis客户端程序).它提供的功能非常多,也非常强大 ...
- Springboot整合TX-LCN实现分布式事务
文章目录 前言 名词解释 TM 配置 TC 配置 LCN (Lock Confirm Notify) 模式 TCC (Try Confirm Cancel) 模式 参考链接 前言 TX-LCN 是一款 ...
最新文章
- key php 转小写_PHP代码层防护与绕过
- URI, URL, URN
- [core]-ARMV7-A、ARMV8-A、ARMV9-A 架构简介
- Spring高级之Spring事务详解(用法、传播行为、隔离级别、只读事务、事务条件)
- 详解回调函数(同步回调,异步回调)
- 卧槽!火爆GitHub的算法电子书开放下载了!
- 几个病毒代码(c++)
- DeepFaceLab AI换脸使用教程(1.安装及分解视频)
- 知乎爬虫与数据分析(一)数据爬取篇
- 天耀18期 – 07.面向对象-继承、访问权限【作业】
- 【问卷调查发布系统的设计与实现】
- 如何培养员工的成就感和工作积极性
- js中用变量作为$()内id的值、动态获取id,及获取其下面的class元素
- 机器学习——15分钟透彻理解感知机
- python怎么导入math库_Python math数学库的用法
- WEB入门二 表格和表单
- [bat]bat命令——findstr
- 8款超高效率的办公软件,增加工作幸福感,千万别错过
- CSS动画篇之炫酷时钟之时钟墙
- python做电磁场计算_加速Python中的计算(模拟磁场中的粒子)