当前位置: 首页 > news >正文

分布式定时任务(xxl-job)

简介

什么是XXL-JOB

详细的文档类容可以看下面这个链接进入readme
xxl-job简介以及下载地址
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展

在Java Spring Cloud微服务架构中,使用独立的定时任务调度中心(如XXL-JOB、Elastic-Job等)来统一管理所有定时任务,是一种更符合分布式系统设计原则的最佳实践。以下是详细的解释和关键点:

为什么推荐集中式调度(XXL-JOB)而不是@Scheduled?

以前的单机springboot项目的时候咱们执行定时任务就是加上@Scheduled注解

但是随着项目增大,单实例的项目资源就不够用了,这时候有些公司就会在同一台服务器部署多实例项目,通过负载均衡,减少了单实例(也可以理解为一台jvm本身资源的限制问题),但是在定时任务过程中会遇到多实例多次调用定时任务的问题,解决办法呢也不难,加上分布式锁就行了,例如redisson加锁,让同一时间只有一个任务能执行。

这样问题是解决了,但是项目随着时间又急速扩大,这时候服务越来越多,形成了多个微服务,这时候项目逐渐转型为springcloud,那么现在手动添加的@scheduled的定时任务就太分散了,不利于管理。

因此xxl-job应运而生。

xxl-job的运行方式

简单点来说就是在xxl-job服务中调用其他服务器的远程接口

                +------------------+|   XXL-JOB Admin  |+------------------+|| (调度HTTP/RPC)v
+------------------+     +------------------+     +------------------+
|     Order Service|     |  Payment Service |     | Inventory Service|
| (提供任务执行接口)|     | (提供任务执行接口)|     | (提供任务执行接口)|
+------------------+     +------------------+     +------------------+

安装

首先下载源码,简介中已经提供地址,下面是项目目录

数据库

在这里插入图片描述
导入数据之后结构如下,下面就是什么日志,用户表一些东西
在这里插入图片描述

控制台

看源码这一部分
在这里插入图片描述
可以看见这就是一个典型的web项目,这里的就是登陆接口,和前端代码
在这里插入图片描述

自己配置ip端口号
这里启动可以是本地jar,也可以是用docker
启动之后的控制台如下
在这里插入图片描述

控制台主要内容就是任务管理和执行器管理
执行器管理:
个人理解就是xxl-job注册的服务器,看那些任务用哪台服务器执行
任务管理:
配置定时任务
在这里插入图片描述
控制台的主要功能在文档中写得很清楚这里就不再赘述。
在这里插入图片描述

任务调度

这里代码就给了我们一个示例
在这里插入图片描述
实际情况我们应该重新创一个项目,相当于前端控制台是一个服务,后端任务调度是一个服务

创建任务调度服务

在这里插入图片描述
基础文件直接照搬xxl-job中的示例就行
在这里插入图片描述
主要的配置
@XxlJob代表创建的定时调度对象,后续会在控制台注册,定时执行的程序就需要用到dubbo远程调度其他服务

@Component
public class EquipmentCalibrationCreatHandler {@DubboReference(validation = "false",retries = 2)private EquipmentRpcService equipmentRpcService;private static final Logger logger = LoggerFactory.getLogger(EquipmentCalibrationCreatHandler.class);@XxlJob("equipmentCalibrationCreatHandler")public ReturnT<String> equipmentCalibrationCreatHandler(String param){XxlJobHelper.log("equipmentCalibrationCreatHandler start........");try {equipmentRpcService.handleEquipmentCalibration();}catch (Exception e){XxlJobHelper.log("equipmentCalibrationCreatHandler error........");XxlJobHelper.log(e);logger.error(e.getMessage());return ReturnT.FAIL;}XxlJobHelper.log("equipmentCalibrationCreatHandler end........");return ReturnT.SUCCESS;}}

配置完后绑定执行器
在这里插入图片描述

打开控制台-》任务管理:新增任务
在这里插入图片描述
完成!

相关文章:

  • FreeRTOS学习笔记【10】-----任务上下文切换
  • 学生管理系统微服务方式实现
  • SQLAlchemy 2.x 异步查询方法比较
  • Rust 学习笔记:函数和控制流
  • tcp 和http 网络知识
  • 详解 Servlet 处理表单数据
  • 向量数据库实践:存储和检索向量数据
  • synchronization
  • 国产升压芯片SL4013能否支持输入三节锂电11V-12.6V升压至24V应用参数?
  • [特殊字符] Docker 从入门到实战:全流程教程 + 项目部署指南(含镜像加速)
  • uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1
  • C++23 新特性深度落地与最佳实践
  • 79. 单词搜索
  • 图论---染色法(判断是否为二分图)
  • 深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
  • Python爬虫实战:获取网yi新闻网财经信息并做数据分析,以供选股做参考
  • 基于51单片机的超声波液位测量与控制系统
  • PMIC PCA9450 硬件原理全解析:为 i.MX 8M 平台供电的“大脑”
  • 23种设计模式-行为型模式之责任链模式(Java版本)
  • 4/24杂想
  • 2025年全国贸易摩擦应对工作会议在京召开
  • 民生访谈|公共数据如何既开放又安全?政务领域如何适度运用人工智能?
  • 专访|白俄罗斯共产党中央第一书记瑟兰科夫:只有大家联合起来,才能有效应对当前危机所带来的冲击
  • 五一假期上海路网哪里易拥堵?怎么错峰更靠谱?研判报告来了
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 李良生已任应急管理部党委委员、政治部主任