欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > SpringCloud项目中集成xxl-job分布式任务调度平台

SpringCloud项目中集成xxl-job分布式任务调度平台

2025/2/21 3:34:08 来源:https://blog.csdn.net/u012171005/article/details/144589058  浏览:    关键词:SpringCloud项目中集成xxl-job分布式任务调度平台

文章目录

    • 一、简介
      • 1.1 概述
      • 1.2 下载
      • 1.3 环境
    • 二、如何使用
      • 2.1 初始化“调度数据库”
      • 2.2 编译源码
      • 2.3 配置部署“调度中心”
        • 步骤一:修改调度中心配置
        • 步骤二:部署调度中心项目
      • 2.4 项目中集成xxl-job
    • 三、总结

一、简介

1.1 概述

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

  • 调度模块(调度中心)
    负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
  • 执行模块(执行器)
    负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
    接收“调度中心”的执行请求、终止请求和日志请求等。
    在这里插入图片描述

1.2 下载

源码仓库地址:https://github.com/xuxueli/xxl-job
技术文档地址:https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8B
PS:这里使用的版本号为2.4.2

1.3 环境

Maven3+
Jdk1.8+
Mysql8.0+

二、如何使用

2.1 初始化“调度数据库”

请下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。

“调度数据库初始化SQL脚本” 位置为:

/xxl-job/doc/db/tables_xxl_job.sql

2.2 编译源码

解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:

xxl-job-admin:调度中心
xxl-job-core:公共依赖
xxl-job-executor-samples:执行器Sample示例(选择合适的版本执行器,可直接使用,也可以参考其并将现有项目改造成执行器):xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;:xxl-job-executor-sample-frameless:无框架版本;

2.3 配置部署“调度中心”

调度中心项目:xxl-job-admin
作用:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。
步骤一:修改调度中心配置

调度中心配置文件地址:

/xxl-job/xxl-job-admin/src/main/resources/application.properties

调度中心配置内容说明:

### 调度中心JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址一致
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq.com
spring.mail.port=25
spring.mail.username=xxx@qq.com
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
### 调度中心通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=my_token
### 调度中心国际化配置 [必填]: 默认为 "zh_CN"/中文简体, 可选范围为 "zh_CN"/中文简体, "zh_TC"/中文繁体 and "en"/英文;
xxl.job.i18n=zh_CN
## 调度线程池最大线程配置【必填】
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100
### 调度中心日志表数据保存天数 [必填]:过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能;
xxl.job.logretentiondays=30

PS:主要是修改数据库信息和accessToken信息

步骤二:部署调度中心项目

PS:以下介绍如何使用docker方式把调度中心项目部署在服务器上。

使用maven将项目打包,得到xxl-job-admin-2.4.2.jar

创建dockfile文件

vi Dockerfile

dockfile文件内容:

FROM openjdk:8-jre-slim
MAINTAINER xuxueli
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD xxl-job-admin-2.4.2.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

把前面打好的jar包和dockfile文件放在同一个目录下面,之后,打docker镜像。

docker build -t xxl-job-admin:2.4.2 .

创建和运行docker容器

docker run -d  --name=xxl-job-admin -p 8082:8080 -v /tmp:/data/applogs  xxl-job-admin:2.4.2

访问调度中心

调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)默认登录账号 “admin/123456”, 登录后运行界面如下图所示。

在这里插入图片描述

2.4 项目中集成xxl-job

PS:在项目中集成xxl-job,其实是把项目改造成xxl-job的执行器使用

修改pom.xml文件,引入xxl-job依赖

 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>2.4.2</version>
</dependency>

在项目的bootstrap.yml中添加xxl-job配置信息,包括调度中心地址、执行器名称等等。

# xxl-job配置
xxl:job:admin:addresses: http://10.152.30.71:8082/xxl-job-adminexecutor:appname: xxl-job-executor-user-customeraddress:ip:port: 9700logpath: /data/applogs/xxl-job/user-customerlogretentiondays: 30accessToken: my_token

在项目中添加配置类

package com.xhnf.user.customer.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author 姑苏老陈* @date 2024/12/18*/
@Configuration
public class XxlJobConfig {@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() {XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppname(appname);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}
}

在项目中添加job任务

package com.xhnf.user.customer.job;import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;/*** @author 姑苏老陈* @date 2024/12/18*/
@Component
public class TestJob {@XxlJob("my-test-job")public ReturnT<String> myTestJob(){System.out.println("***************测试定时任务,开始执行---------------!!!");return ReturnT.SUCCESS;}
}

之后,启动运行项目。

之后,登录调度中心页面,添加对应的执行器和job任务。(PS:注意执行器名称和job任务名称需要跟上面代码中保持一致)

添加执行器。
在这里插入图片描述

在这里插入图片描述

添加job任务。

在这里插入图片描述

在这里插入图片描述

启动job任务。

在这里插入图片描述

查看调度日志,如果执行结果为“成功”,则说明job任务运行正常。

在这里插入图片描述

三、总结

以上详细介绍了如何在SpringCloud项目中集成分布式任务调度平台xxl-job。希望对大家有帮助,谢谢关注。

如果您对文章中内容有疑问,欢迎在评论区进行留言,我会尽量抽时间给您回复。如果文章对您有帮助,欢迎点赞、收藏。您的点赞,是对我最大的支持和鼓励,谢谢 :-)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词