XXL-JOB分布式任务调度快速入门

2024-06-12 20:28

本文主要是介绍XXL-JOB分布式任务调度快速入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 概念
  • 快速启动XXL-JOB调度
  • 初始化执行器项目
  • 配置执行器
  • 新增GLUE模式(Java)的任务
  • 新增BEAN模式(类形式)的任务
  • BEAN模式(方法形式)的任务
  • 参考来源

概念

XXL-JOB是一个开源的分布式任务调度平台,它是一个轻量级、易扩展的任务调度平台

快速启动XXL-JOB调度

  • 拉取XXL-JOB源码

    git clone https://gitee.com/xuxueli0323/xxl-job.git
    
  • 执行调度数据库SQL脚本
    IDEA打开调度项目,执行doc/db/tables_xxl_job.sql

  • 配置调度中心数据库连接地址
    在这里插入图片描述

  • 修改调度中心日志文件地址
    在这里插入图片描述

  • 启动并访问调度中心

    • 访问地址:http://localhost:8080/xxl-job-admin
    • 用户名:admin
    • 密码:123456
      在这里插入图片描述

初始化执行器项目

  • 初始化一个Spring Boot项目

我这里使用的 Spring Boot 版本是 2.3.6.release
在这里插入图片描述

  • 引入maven依赖
    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--   XXL-JOB 公共依赖   --><dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.1</version></dependency></dependencies>
  • 配置 XXL-JOB
server.port=20200
spring.application.name=xxl-job-demo
### 调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=default_token
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=my-xxl-job-executor
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxl.job.executor.ip=
### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.port=9999
### 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxl.job.executor.logpath=D:\TestFiles\logs\xxl-job\jobhandler
### 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
xxl.job.executor.logretentiondays=30
  • 创建XXL-JOB配置类
@Configuration
public class XxlJobConfig {private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);@Value("${xxl.job.admin.addresses}")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;@Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}
  • 启动项目

配置执行器

在这里插入图片描述

新增GLUE模式(Java)的任务

GLUE模式(Java)运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,它只需要在调度中心控制台创建,无需我们手动编写任务代码

  • 创建GLUE模式(Java)的任务
    在这里插入图片描述
    在这里插入图片描述

  • 手动执行任务
    在这里插入图片描述
    在这里插入图片描述

  • 查看执行结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

实际上,当我们创建了一个GLUE模式(Java)的任务后,调度中心会帮我们自动生成任务代码,代码可以在GLUE IDE查看
在这里插入图片描述
在这里插入图片描述

新增BEAN模式(类形式)的任务

创建BEAN模式(类形式)的任务需要我们在执行器项目中自行编写任务代码

  • 创建一个Job类
public class MyXxlJob extends IJobHandler {@Overridepublic void execute() throws Exception {XxlJobHelper.log("hello class xxl-job");}
}
  • 在XXL-JOB配置类中将Job注入到执行器容器
    @PostConstructpublic void registerJob() {XxlJobExecutor.registJobHandler("MyXxlJob", new MyXxlJob());}
  • 创建BEAN模式(类形式)的任务
    在这里插入图片描述
  • 执行任务并查看执行结果
    与前面GLUE模式(Java)任务的操作类似

BEAN模式(方法形式)的任务

在BEAN模式(类形式)下,每个类代表一个任务,而在BEAN模式(方法形式)下,每个方法代表一个任务,只需要在方法上用@XxlJob注解标识即可

  • 创建一个Job类并编写一个Job方法
@Component
public class MyMethodXxlJob {@XxlJob("MyMethodXxlJob")public void sayHello() {XxlJobHelper.log("hello method xxl-job");}
}
  • 创建BEAN模式(方法形式)的任务
    在这里插入图片描述

  • 执行任务并查看执行结果
    与前面GLUE模式(Java)任务的操作类似

参考来源

  • XXL-JOB官网

这篇关于XXL-JOB分布式任务调度快速入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1055249

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2