网站首页 > 开源技术 正文
XXL-JOB概述
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
—— 引自官网(官网地址:https://www.xuxueli.com/xxl-job/)
任务调度中心
1、下载XXL-JOB源码。
git clone https://github.com/xuxueli/xxl-job.git
XXL-JOB源码目录结构说明:
- doc:XXL-JOB文档(XXL-JOB架构图、XXL-JOB官方文档、数据表初始化脚本、效果截图)
- xxl-job-admin:调度中心
- xxl-job-core:公共依赖
- xxl-job-executor-samples:执行器Sample示例
- xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执行器,推荐这种方式;
- xxl-job-executor-sample-frameless:无框架版本
2、创建数据库,执行初始化脚本。
创建数据库,数据库名称xxl-job。
执行SQL脚本文件,脚本文件位置:xxl-job\doc\db\tables_xxl_job.sql。
3、运行调度中心(xxl-job-admin)。
使用IntelliJ IDEA打开项目xxl-job,修改调度中心配置。
调度中心配置文件地址:
/xxl-job/xxl-job-admin/src/main/resources/application.properties
修改调度中心数据库连接信息:
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=abc123
在IntelliJ IDEA中启动项目xxl-job-admin。待启动成功后在浏览器地址栏输入http://localhost:8080/xxl-job-admin进入任务调度中心登录页面。
输入默认的用户名、密码(admin/123456)登录系统。
执行器项目
在我们下载的XXL-JOB源码中有执行器示例程序(Spring Boot版),开发自己的执行器时可以参考。
1、创建Spring Boot项目,添加Maven依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2、编写配置文件。
# xxl-job配置
xxl:
job:
admin:
# 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
addresses: http://localhost:8080/xxl-job-admin
executor:
# 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
address:
# 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
appname: xxl-job-executor-sample
# 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
ip:
# 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
port: 9999
# 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
logpath:
# 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
logretentiondays: 15
# 执行器通讯TOKEN [选填]:非空时启用;
accessToken:
这里的appname对应任务调度中心 --> 执行器管理 --> 执行器列表中执行器AppName。
3、编写配置类。
@Slf4j
@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;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
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;
}
}
3、编写执行器服务类
@Slf4j
@Component
public class XxlJobService {
/**
* 1、简单任务示例(Bean模式)
*/
@XxlJob("customJobHandler")
public ReturnT<String> customJobHandler(String param) throws Exception {
log.info("## custom job handler run. ##");
log.info("param: {}", new Gson().toJson(param));
XxlJobHelper.log("XXL-JOB, Hello World.");
for (int i = 0; i < 5; i++) {
XxlJobHelper.log("beat at:" + i);
TimeUnit.SECONDS.sleep(2);
}
return ReturnT.SUCCESS;
}
}
4、运行执行器项目。
测试
1、添加任务。
任务调度中心 --> 任务管理 --> 新增。
填写完任务信息后点击“保存”按钮。然后在任务列表页面点击任务Row中的“操作”右侧的下拉框,选择执行一次,再点击“保存”,任务就被执行了一次了。
任务信息属性说明:
- 任务描述:随便写点就好;
- Cron:执行器执行时间;
- 运行模式:这里选的Bean;
- JobHandler:对应执行器类服务类中@XxlJob("customJobHandler")
之前用XXL-JOB做过一个定时任务,每天创建一个新表。长时间没有再接触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 SpringBoot基础教程3-1-4 xxl-job快速整合
- 2024-09-28 xxl-job v2.1.0正式发布(京办电脑版官方下载v2.1.0)
- 2024-09-28 简单易懂,分布式任务调度平台XXL-JOB快速搭建
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)