分布式定时任务(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服务中调用其他服务器的远程接口

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

安装

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

数据库

导入数据之后结构如下,下面就是什么日志,用户表一些东西

控制台

看源码这一部分

可以看见这就是一个典型的web项目,这里的就是登陆接口,和前端代码

自己配置ip端口号

这里启动可以是本地jar,也可以是用docker

启动之后的控制台如下

控制台主要内容就是任务管理和执行器管理

执行器管理:

个人理解就是xxl-job注册的服务器,看那些任务用哪台服务器执行

任务管理:

配置定时任务

控制台的主要功能在文档中写得很清楚这里就不再赘述。

任务调度

这里代码就给了我们一个示例

实际情况我们应该重新创一个项目,相当于前端控制台是一个服务,后端任务调度是一个服务

创建任务调度服务

基础文件直接照搬xxl-job中的示例就行

主要的配置

@XxlJob代表创建的定时调度对象,后续会在控制台注册,定时执行的程序就需要用到dubbo远程调度其他服务

java 复制代码
@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;
    }


}

配置完后绑定执行器

打开控制台-》任务管理:新增任务

完成!

相关推荐
今天AI了吗38 分钟前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午1 小时前
27-AuthService登录链路
java·低代码·架构
泡海椒1 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP1 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
Rain的Java大神之路2 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner2 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库
那个松鼠很眼熟w2 小时前
4.Spring-Ai入门案例
java·人工智能·spring
计算机毕设定制辅导-无忧学长2 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
会周易的程序员3 小时前
5Draft(五帝)测试报告
服务器·c++·分布式·raft·共识算法·共识·算力服务器
泡海椒4 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven