网站首页 > 开源技术 正文
1 概述
XXL-JOB是一个轻量级分布式任务调度平台,开发迅速、学习简单、轻量级、易扩展。本文演示如何使用快速SpringBoot,搭建XXL-JOB调度平台。
xxl-job详细介绍请移至官网http://www.xuxueli.com/xxl-job/#/?id=%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
2 简单理解
xxl-job由调度中心和执行器两部分组成,调度中心负责任务的调度,执行器负责执行任务。调度中心后台,支持配置任务,控制任务,查看任务运行日志等功能。
3 本地环境准备
- Java 1.8
- mysql 5.6
- Git 2.16.2
- Maven 3.2.5
- Tomcat 9
- vmware + centos (仅用于分片调度演示)
4 部署调度中心
- 拉取源码
git clone git@github.com:xuxueli/xxl-job.git
- 初始化数据库:
目录:/xxl-job/doc/db/tables_xxl_job.sql
- 修改调度中心数据源配置
目录:/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties
- 编译打包
cd /xxl-job/xxl-job\xxl-job-adminmvn clean pacakge
- 将war包,拷贝至tomcat
war所在目录:/xxl-job/xxl-job\xxl-job-admin/targettomcat部署目录:/apache-tomcat-9.0.12/webapps
- 启动tomcat
运行/apache-tomcat-9.0.12/bin目录下的startup.bat
- 访问控制中心后台
http://localhost:8080/xxl-job-admin-1.9.1/
注意: xxl-job版本已官网最新版本为准
5 单个执行器示例
5.1 添加依赖
<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>1.9.1</version> </dependency>
5.2 添加调度中心和执行器配置
xxl: job: admin: ### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。 addresses: http://127.0.0.1:8080/xxl-job-admin-1.9.1 executor: ### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。 ### 执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,手动设置IP时将会绑定Host。单机部署多个执行器时,注意要配置不同执行器端口; appName: my-xxl-job-executor ip: port: 8889 ### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限 logPath: /data/applogs/xxl-job/jobhandler ### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效; logRetentionDays: -1 ### xxl-job, access token:执行器通讯TOKEN,非空时启用 accessToken: server: port: 8081
5.3 配置执行器
@Slf4j
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String addresses;
@Value("${xxl.job.executor.appName}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logPath}")
private String logPath;
@Value("${xxl.job.executor.logRetentionDays}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobExecutor xxlJobExecutor = new XxlJobExecutor();
xxlJobExecutor.setAdminAddresses(addresses);
xxlJobExecutor.setAppName(appName);
xxlJobExecutor.setIp(ip);
xxlJobExecutor.setPort(port);
xxlJobExecutor.setAccessToken(accessToken);
xxlJobExecutor.setLogPath(logPath);
xxlJobExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobExecutor;
}
}
5.4 新建执行器
/**
* 任务Handler示例(Bean模式)
*
*/
@JobHandler(value="demoJobHandler")
@Component
public class DemoJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) {
XxlJobLogger.log("XXL-JOB, Hello World.");
return SUCCESS;
}
}
5.5 启动执行器
执行器会定时到调度中心注册,上图说明注册成功;任务调度中心执行管理菜单中能查询所有注册的执行器。
5.6 任务调度中心新增任务
5.7 任务调度中心查看调度日志
6 多个执行器分片执行示例
6.1 新建分片调度执行器
/**
* 分片广播任务
*/
@JobHandler(value="shardingJobHandler")
@Component
public class ShardingJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String param) {
// 分片参数
ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
XxlJobLogger.log("分片参数:当前分片序号 = {0}, 总分片数 = {1}", shardingVO.getIndex(), shardingVO.getTotal());
// 业务逻辑
for (int i = 0; i < shardingVO.getTotal(); i++) {
if (i == shardingVO.getIndex()) {
XxlJobLogger.log("第 {0} 片, 命中分片开始处理", i);
} else {
XxlJobLogger.log("第 {0} 片, 忽略", i);
}
}
return SUCCESS;
}
}
6.2 虚拟机,本地同时启动执行器
- 虚拟机中代码通过git同步更新
- 注意:需要修改虚拟机中,调度中心配置文件,调度中心地址改为本地IP
- 注意:确保本地与虚拟机的网络环境,保证http协议畅通
- 编译打包虚拟机代码:mvn clean package
- 进入目录:/Chapter3-1-4/target
- 启动服务:java -jar Chapter3-1-4-1.0-SNAPSHOT.jar
- 启动后,检查调度中心执行器是否注册成功
6.3 任务调度中心新增任务
6.4 任务调度中心查看调度日志
7 工程目录
8 结束语
工欲善其事必先利其器,拥抱开源,解放双手,本文源码链接:
https://github.com/Mkeeper6/SpringBoot-About
猜你喜欢
- 2024-09-28 Spring Boot | Spring Boot整合XXL-JOB开发定时任务
- 2024-09-28 springboot整合xxl-job分布式定时任务
- 2024-09-28 XXL-JOB 针对未授权访问导致远程命令执行漏洞的声明
- 2024-09-28 微服务调度中心升级xxl-job及xxl-job改造(二)
- 2024-09-28 XXL-Job 适配 Postgre 数据库的完整流程
- 2024-09-28 定时任务框架选型Quartz/Xxl-Job(较大多层框架结构基础选型技术经济分析)
- 2024-09-28 记一次 xxl-job 实战(记一次运动会作文600字六年级点面结合)
- 2024-09-28 项目基础部署汇总八---linux下xxl-job安装
- 2024-09-28 xxl-job v2.1.0正式发布(京办电脑版官方下载v2.1.0)
- 2024-09-28 简单易懂,分布式任务调度平台XXL-JOB快速搭建
欢迎 你 发表评论:
- 1587℃北京那些看上去很牛的车牌们!(北京厉害车牌)
- 1106℃2025年度视频去水印软件TOP5对比:哪款最值得用
- 682℃《我的世界》不同版本的差异 ——新手向
- 593℃新疆话里的“虫子”
- 513℃中兴光猫 Telnet下设置大全(中兴光猫命令大全)
- 512℃蓝牙设备配对失败的系统性解决方案与技术解析
- 505℃未备份电脑文件数据恢复的七种方法
- 487℃工艺管道常用英文缩写 英汉对照
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)

本文暂时没有评论,来添加一个吧(●'◡'●)