xxl-job使用总结

news2024/11/16 9:35:49

xxl-job从入门到入土

xxl-job介绍

xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。xxl-job支持调度中心集群和执行器集群。

xxl-job开源项目

xxl-job使用

xxl-job整合SpringBoot

  1. 引入xxl-job的依赖
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.4.0</version>
        </dependency>
  1. xxl-job执行器配置
@Configuration
@Slf4j
public class XxlJobConfig {
    @Value("${xxl.job.admin.address}")
    private String adminAddresses;
    @Value("${xxl.job.accessToken}")
    private String accessToken;
    @Value("${xxl.job.executor.appname}")
    private String appname;
    @Value("${xxl.job.executor.address}")
    private String address;
    @Value("${xxl.job.executor.ip}")
    private String ip;
    @Value("${xxl.job.executor.port}")
    private int port;
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;

    /**
     * 执行器
     */
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor executor = new XxlJobSpringExecutor();
        //调度中心地址
        executor.setAdminAddresses(adminAddresses);
        //执行器名称
        executor.setAppname(appname);
        //执行器地址
        executor.setAddress(address);
        //执行器ip
        executor.setIp(ip);
        //执行器端口,如果集单机群部署,则执行器的端口需要不一样
        executor.setPort(port);
        //需要和调度中心配置文件中的配置一致
        executor.setAccessToken(accessToken);
        //执行器日志存储路径
        executor.setLogPath(logPath);
        //执行器日志文件保存天数,过期日志自动清理, 大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
        executor.setLogRetentionDays(logRetentionDays);

        return executor;
    }

}
  1. application.yml文件
xxl:
  job:
    accessToken: default_token  #与xxl-job-admin配置一致
    admin:
      address: http://localhost:8080/xxl-job-admin  #xxl-job-admin地址
    executor:  #执行器配置,执行器就是被调度中心调度的任务
      appname: xxl-job-executor-test
      address: http://127.0.0.1:9986
      ip: 127.0.0.1
      port: 9986
      logpath: /data/applogs/xxl-job/jobhandler  #日志路径
      logretentiondays: -1  #执行器日志文件保存天数 [选填] : 过期日志自动清理, 大于等于3时生效; 否则, 如-1, 关闭自动清理功能

spring:
  application:
    name: xxl-job-executor
  autoconfigure:
    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
server:
  port: 9987  #应用的port和执行器的port需要不一致,不然启动会报错

到这里为止,执行器的配置就完成了,但是项目不能正常启动,因为需要调度中心。

  1. 下载xxl-job项目,启动调度中心应用,在调度中心中创建执行器,执行器的AppName需要和执行器的配置文件中的appname保持一致,注册方式选择自动注册后,如果执行器能注册到调度中心,则会自动获取到执行器的地址,如果没有获取到地址后面执行会报错
    在这里插入图片描述
  2. 启动执行器,看执行器的机器地址是否为空就能知道执行器有没有成功注册了

定时任务

注册定时任务有两种方式,一种是继承IJobHanlder类,还有一种是使用@xxlJob注解

继承IJobHanlder

继承IJobHanlder类后,需要使用执行器的registerHandler方法注册到执行器中,不然会执行任务会报错。

@Component("testJobHandler")
public class TestJobHandler extends IJobHandler {

    private Logger logger = LoggerFactory.getLogger(TestJobHandler.class);


    @Override
    public void execute() throws Exception {
        logger.info("TestJobHandler execute ......");
    }

}

使用执行器注册该任务

executor.registJobHandler("testJobHandler", new TestJobHandler());

不推荐使用这种方式注册任务。

@xxlJob

使用注解的缺点是需要在调度中心后台手动配置任务

    /**
     * 这里需要返回一个结果,否则任务调度中心上调度日志的执行结果显示成功,但是调度结果显示失败
     */
    @XxlJob("testJob1")
    public ReturnT<String> executeJob() {
        logger.info("testJob1 executor: " + serverPort);
        return ReturnT.SUCCESS;
    }

在调度中心配置对应任务,JobHandler需要和注解中的"testJob1"保持一致
在这里插入图片描述

对于需要手动注册定时任务的问题,网上有相应的解决方案
魔改xxl-job,彻底告别手动配置任务!

调度中心介绍

调度中心有6个大功能,需要重点关注的是任务管理和执行器管理。
在这里插入图片描述

执行器管理

执行器管理的配置不多,比较简单,上文中已经介绍了,这里就不多说了。
在这里插入图片描述

任务管理

一个任务有下图所示的配置。
在这里插入图片描述

  1. 基础配置
  2. 报警邮件:
  3. 调度配置:设置任务的执行周期,执行一次还是周期性执行
任务配置
  1. 运行模式
    • Bean:上文提到的两种定时任务的运行模式都是Bean
    • GLUE:将定时任务的执行逻辑以代码的形式直接嵌入到执行器中。这种方式适用于需要频繁更新任务逻辑的场景
GLUE模式

创建一个GLUE模式的任务,可以看到此时JobHandler是只读的。
在这里插入图片描述
在列表上选择GLUE模式的任务,操作红会有一个GLUE IDE,点击这个按钮
在这里插入图片描述
输入需要执行的逻辑即可,建议在IDE中写好,直接复制过去。在GLUE任务的代码里面也是可以@Autowired等注解的,写好后保存即可。
在这里插入图片描述

高级配置
  1. 路由模式:将一个任务分发到多个执行器上执行的方式
    • 广播模式:所有执行器都会接收到任务并执行
    • 分片模式:将任务分片,每个执行器执行其中的一部分
    • 固定模式:指定某个执行器执行任务
    • 轮询模式:按照轮询的模式选择执行
  2. 调度过期策略:当任务执行超过预定时间后如何处理
    • 忽略:当调度中心错过调度时间时,忽略此次调度,不再进行补偿处理
    • 立即执行一次:当调度中心错过调度时间时,立即进行一次补偿触发,以确保任务能够被执行
  3. 阻塞处理策略
    • 单机串行:默认的阻塞处理策略,当任务队列中的任务数量达到上限时,新的任务请求会在当前执行器中串行执行
    • 弃后续调度:当任务队列中的任务数量达到上限时,新的任务请求会被直接丢弃
    • 覆盖之前调度:当任务队列中的任务数量达到上限时,新的任务请求会覆盖之前的任务请求

集群

调度中心集群

XXL-JOB调度中心集群部署配置

执行器集群

xxl-job执行器集群部署及路由策略实践

微服务架构下执行器的整合

主要是两种思路:

  1. 将执行器整合到业务的服务实例中,比如将执行器和任务都放在库存服务中
  2. 单独抽出一个执行器服务,通过Feign调用其它业务服务

参考

  • xxl-job执行器集群部署及路由策略实践
  • XXL-JOB调度中心集群部署配置
  • xxl-job

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 3.4.0还没来之前,又又又更新啦!SpringBoot 3.3.4版本依赖升级,性能与稳定性再提升!

为什么要使用SpringBoot在现代开发中&#xff0c;高效与灵活性是每个开发团队追求的核心目标。然而&#xff0c;如何在不牺牲灵活性的前提下&#xff0c;快速构建复杂的应用程序&#xff0c;常常成为开发者的难题。SpringBoot的出现&#xff0c;正是为了解决这个矛盾。它以“约…

【Linux】【Hadoop】大数据基础实验一

实验一&#xff1a;熟悉常用的Linux操作和Hadoop操作 一、实验目的 Hadoop运行在Linux系统上&#xff0c;因此&#xff0c;需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作&#xff0c;为顺利开展后续其他实验奠定基础。 二、实验平台 操作系统…

从 Affine Particle-In-Cell (APIC) 到 Material Point Method (MPM 物质点法)

APIC与MPM Particle-In-Cell (PIC)Affine Particle-In-Cell (APIC)Material Point Method (MPM)关于边界投影等额外操作 Material Point Method (MPM 物质点法)是一种混合欧拉-拉格朗日视角物理仿真方法。 欧拉视角即网格视角&#xff0c;将空间划分为网格&#xff0c;通过表示…

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型

【永磁同步电机&#xff08;PMSM&#xff09;】 5. PMSM 的仿真模型 1. 基于 Simulink 的仿真模型1.1 PMSM 的数学模型1.2 Simulink 仿真模型1.3 模块封装&#xff08;mask&#xff09;1.4 三相PMSM矢量控制仿真模型 2. Simscape 的 PMSM 模块2.1 PMSM 模块的配置2.2 PMSM 模块…

秃头篇——二叉树进阶算法题

一、根据二叉树创建字符串 题目&#xff1a; 思路&#xff1a;这个题很明显需要我们采用二叉树的递归实现&#xff08;前序遍历&#xff09;&#xff0c;但有一个注意的点&#xff1a;空括号能不能省略的问题&#xff0c;其实我们发现只要左为空&#xff0c;右不为空不能省略括…

[JavaEE] 网络初识(网络通信 及 TCP / UDP / IP 封装分用 )

Author&#xff1a;MTingle major:人工智能 --------------------------------------- Build your hopes like a tower! 文章目录 目录 文章目录 一. 网络通信基础 1. 局域网LAN 2. ⼴域⽹WAN 3. IP地址 4. 端口号 二.协议 1. 五元组 2. 协议分层 协议分层的优点: 3. OSI七层协…

OJ在线评测系统 后端开发数据库初始化工作 开发库表 建立数据库索引 Mybatis映射初始化接口开发

后端接口开发库表设计 项目主业务流程的开发 1.用户模块 注册&#xff08;后端已实现&#xff09; 登录&#xff08;后端已实现 前端已实现&#xff09; 2.题目模块 创建题目&#xff08;管理员&#xff09; 删除题目&#xff08;管理员&#xff09; 修改题目&#xff0…

基于SpringBoot+Vue+MySQL的校园一卡通系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着现代社会的快速发展&#xff0c;校园一卡通已成为大学生活中不可或缺的一部分。它不仅承载着校园消费的功能&#xff0c;还集成了学生身份证明、图书馆借阅、门禁系统等多种服务。然而&#xff0c;传统的一卡通管理系统往往…

阿里HPN-用于大型语言模型训练的数据中心网络

阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法&#xff1a;阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如&#xff0c;在流量模式和容错性方面)&…

【机器学习】12-决策树1——概念、特征选择

机器学习10-决策树1 学习样本的特征&#xff0c;将样本划分到不同的类别&#xff08;分类问题&#xff09;或预测连续的数值&#xff08;回归问题&#xff09;。 选择特征&#xff0c;划分数据集&#xff0c;划分完成形成模型&#xff08;树结构&#xff09;&#xff0c;一个…

新手必看:一步步教你绑定常见邮箱到第三方应用(如何绑定QQ、163、Hotmail、Gmail等邮箱)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 邮箱绑定 📒📫 QQ邮箱📫 163邮箱📫 Hotmail邮箱📫 Gmail邮箱📫 Yahoo邮箱📫 iCloud邮箱📫 其他邮箱⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾经为绑定第三方邮箱而感到困惑?你不是一个人!许多人在尝试将QQ邮…

QT创建菜单

增加显示信息

MySQL数据库的增删改查以及基本操作分享

1、登录MySQL数据库 首先找到你安装MySQL数据库的目录&#xff0c;然后在终端打开该目录&#xff0c;输入以下命令 mysql -u root -p然后输入密码就可以登录数据库了&#xff0c;看到如下页面就是登陆成功了 ***注意在终端操纵数据库时所有语句写完之后一定要加 &#xff1…

【线程】线程的同步

本文重点&#xff1a;理解条件变量和生产者消费者模型 同步是在保证数据安全的情况下&#xff0c;让我们的线程访问资源具有一定的顺序性 条件变量cond 当一个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了&#xff0c;…

CSS 选择器的分类与使用要点一

目录 非 VIP 用户可前往公众号进行免费阅读 标签选择器 id 选择器 类选择器 介绍 公共类 CSS 中优先用 class 选择器,慎用 id 选择器 后代选择器 交集选择器 以标签名作为开头 以类名作为开头 连续交集 并集选择器(分组选择器) 通配符* 儿子选择器 >(IE7…

Elasticsearch——介绍、安装与初步使用

目录 1.初识 Elasticsearch1.1.了解 ES1.1.1.Elasticsearch 的作用1.1.2.ELK技术栈1.1.3.Elasticsearch 和 Lucene1.1.4.为什么不是其他搜索技术&#xff1f;1.1.5.总结 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排 1.3.Elasticsearch 的一些概念1.3.1.文档和字…

基于单片机的智能温控风扇系统的设计

&#xff3b;摘 要&#xff3d; 设计一种基于单片机的智能温控风扇系统&#xff0c;系统由 STC 系列的 51 单片机 、 温度传感器 、 LED 数码管和风扇等模块组成。 本系统具有对外界温度感知以及对感知数据进行分析处理 、 智能调节等功能&#xff0c;避免因温度过高而产生…

【全部更新】2024华为杯数学建模研赛F题思路代码文章全国研究生数学建模-X射线脉冲星光子到达时间建模

截止9.22 14:00 已更新全部文章内容完整求解代码(正版授权) ### https://docs.qq.com/doc/DVVBUREF2SmFhRUl3X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星&#xff0c;其自转形成规律性脉冲信号&#xff0c;类似于“宇宙中的灯塔”&#xff0c;因此被认为是…

鸿蒙 WebView 如何 Debug

前置&#xff1a; hdc chrome //----------------------------------------------------------------------------------------------- hdc shell cat /proc/net/unix | grep devtools 0: 00000002 0 10000 1 1 81134005 webview_devtools_remote_62479exit执行&…

[001-02-001].第2节:java开发环境搭建

4.1.书籍推荐&#xff1a; 4.2.人机交互方式 1.图形化界面(Graphical User Interface GUI)这种方式简单直观&#xff0c;使用者易于接受&#xff0c;容易上手操作2.命令行方式(Command Line Interface CLI)&#xff1a;需要有一个控制台&#xff0c;输入特定的指令&#xff0c…