springboot整合xxl-job分布式定时任务【图文完整版】

网友投稿 241 2022-09-04

springboot整合xxl-job分布式定时任务【图文完整版】

一、前言

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

JDK的​​Timer和TimerTask​​​​Quartz​​异步任务调度框架分布式定时任务​​XXL-JOB​​Spring Task注解​​@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=添加自己的定时任务

@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. 登录

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

​​密码:​​123456​​

3. xxl-job的好处

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

4. 查看执行器获取网址

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

5. 新增任务管理

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

6. 执行任务

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

任务参数随便输入,机器地址为:​​执行成功

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

8. 查看日志

五、总结

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:后端统一处理返回前端日期LocalDateTime格式化去T,Long返回前端损失精度问题
下一篇:市场不好的时候,营销应该做些啥?(什么人不适合做市场营销)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~