一、前言

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

比如常见的:

  • 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=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

那就是端口号被占用,换一个就行了!!

也可以看看小编这篇文章,详细解决了这个问题!!

Address already in use: bind【已解决】


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

点击访问!小编自己的网站,里面也是有很多好的文章哦!

springboot整合xxl-job分布式定时任务【图文完整版】的更多相关文章

  1. kubernetes---CentOS7安装kubernetes1.11.2图文完整版

    转载请注明出处:kubernetes-CentOS7安装kubernetes1.11.2图文完整版 架构规划 k8s至少需要一个master和一个node才能组成一个可用集群. 本章我们搭建一个mas ...

  2. 【Spring Cloud & Alibaba全栈开源项目实战】:SpringBoot整合ELK实现分布式登录日志收集和统计

    一. 前言 其实早前就想计划出这篇文章,但是最近主要精力在完善微服务.系统权限设计.微信小程序和管理前端的功能,不过好在有群里小伙伴的一起帮忙反馈问题,基础版的功能已经差不多,也在此谢过,希望今后大家 ...

  3. Redis-基本概念、java操作redis、springboot整合redis,分布式缓存,分布式session管理等

    NoSQL的引言 Redis数据库相关指令 Redis持久化相关机制 SpringBoot操作Redis Redis分布式缓存实现 Resis中主从复制架构和哨兵机制 Redis集群搭建 Redis实 ...

  4. Springboot整合RocketMQ解决分布式事务

    直接上代码: 代码结构如下: 依次贴出相关类: DataSource1Config: package com.example.demo.config;import org.apache.ibatis. ...

  5. docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  6. springboot整合curator实现分布式锁

    理论篇: Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处 ...

  7. springboot整合zookeeper实现分布式锁

    目录 01 安装并允许zookeeper 02 springboot应用配置CuratorFramework 03 使用zookeeper实现集群只一个应用实例执行定时任务 04 使用zookeepe ...

  8. SpringBoot 整合 Dubbo 进行分布式开发

    自从Dubbo支持SpringBoot后,Dubbo与Spring的整合变得更加的简单了,下面就是完整的步骤: 1. 引入依赖 <dependency> <groupId>co ...

  9. SpringBoot整合quartz框架启动定时任务报错:the given trigger will never fire.

    org.quartz.SchedulerException: Based on configured schedule, the given trigger 'DEFAULT.cron_b1a91e1 ...

随机推荐

  1. CoaXPress 线缆和接插件的设计要求

    本文的原理部分内容不仅适用于CoaXPress 协议,也同样适用于其它高速信号传输情形.在高速.低干扰信号传输时,线缆和接插件的选取是非常讲究的,我们在实际应用中经常会遇到线缆原因.阻抗匹配原因导致的 ...

  2. java中关于while(true)的理解

    java中while(true)的理解: while(true)作为无限循环,经常在不知道循环次数的时候使用,并且需要在循环内使用break才会停止,且在run()方法中基本都会写while(true ...

  3. 计算机网络 - OSI 7层网络模型各层对应的功能

    应用层 - 负责给应用程序提供统一的接口 表示层 - 负责把数据的解压缩和编码 会话层 - 负责会话的管理(建立和终止) 传输层 - 负责端到端的数据传输 网络层 - 负责数据的路由.转发.分片 数据 ...

  4. 华为云Stack首席架构师:打造“称手”的数字化工具,答好政企IT数字化转型这道必选题

    摘要:数字化转型是一号位工程,数字化的工具本身就是企业的核心竞争力. 本文分享自华为云社区<华为云Stack首席架构师:打造"称手"的数字化工具,答好政企IT数字化转型这道必 ...

  5. 【Spring】事务的执行原理(三)

    事务的回滚 如果获取事务属性不为空,并且抛出的异常是RuntimeException或者Error类型,调用事务管理器中的rollback方法进行回滚 如果事务属性为空或者抛出的异常不是Runtime ...

  6. .NET6 开源之JSON 2 SQL (JORM框架)

    什么是JORM框架? 全称 :Json  Object Relational Mapping   ,它是通过JSON 对象 去实现数据库的一个关系映射 ,我理想中完整的JORM包含功能有 ·1.表权授 ...

  7. Java中JSON字符串和对象的互转

    对象转换成json字符串: JSONObject.toJSONString(switchmes) JSON字符串转换成对象: Switchmes switchmes=(Switchmes) JSONO ...

  8. List集合五种遍历方式

    一.使用Iterator接口遍历 二.普通for循环遍历 三.增强for循环遍历 四.List集合自带迭代器 五.Lambda(JDK8新增特性) //使用多态方式创建对象 List<Strin ...

  9. 执行docker一系列命令失败

    出现这种情况之后,执行下面的命令即可. systemctl restart docker

  10. C#生成putty格式的ppk文件(支持passphrase)

    背景 2022国家级护网行动即将开启,根据阿里云给出的安全建议,需要将登陆Linux的方式改为密钥对方式.我这里使用的远程工具是自己开发的,能够同时管理Windows和Linux,但是以前不支持密钥对 ...