xxl-job分布式任务调度平台和SpringBoot的简单整合
作者:互联网
一、xxl-job概述
官方说明:XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
二、xxl-job使用
-
前往 Gitee 地址进行下载:
https://gitee.com/xuxueli0323/xxl-job.git
注:本文是2.3.0版本
-
拉取代码
-
代码结构如下:
-
运行sql文件至本地数据库
-
修改本地数据库连接信息
-
启动任务调度中心
-
浏览器默认访问地址:http://localhost:8080/xxl-job-admin
默认账号:admin
默认密码:123456 -
登录成功
-
三、整合SpringBoot项目
-
引入Maven依赖
<dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.3.0</version> </dependency>
-
创建XxlJobConfig配置类
点击查看代码
package com.example.rest.config; import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 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; @Bean public XxlJobSpringExecutor xxlJobExecutor() { logger.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; } }
-
修改yml配置文件
点击查看代码
xxl: job: admin: # 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。 addresses: http://127.0.0.1:8080/xxl-job-admin # 执行器通讯TOKEN [选填]:非空时启用 accessToken: "" executor: # 执行器的应用名称 appname: xxl-job-test # 执行器注册 [选填]:优先使用该配置作为注册地址 address: "" # 执行器IP [选填]:默认为空表示自动获取IP ip: "" # 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999 port: 9999 # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径; logpath: /data/applogs/xxl-job/jobhandler # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能; logretentiondays: -1
注:如果将配置在ncaos中进行配置,需将xxl.job.accessToken等默认为空的配置赋予空字符串"",否则会报Could not resolve placeholder ‘xxl.job.accessToken’ in value “${xxl.job.accessToken}”错误(在本地配置文件中配置则不需要)
-
编写测试类
点击查看代码
package com.example.rest.jobHandler; import com.xxl.job.core.handler.annotation.XxlJob; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; /** * xxl-job测试类 */ @Component public class XxlJobTest { @XxlJob("testXxlJob") public void testJobHandler() throws InterruptedException { for (int i = 0; i < 5; i++) { System.out.println("ok"); TimeUnit.SECONDS.sleep(1); } } }
-
启动服务,先启动xxl-job-admin模块,再启动自己的springBoot服务(因为xxl-job-admin模块的端口为8080,所以需修改本地的端口,否则会报错)
-
任务调度中心,配置服务
-
新增执行器
-
新增任务
-
执行任务(本地测试点击执行一次即可,如项目运行,点击启动)
-
执行结果
-
到这里,XXL-JOB 与 SpringBoot的简单整合就完成了
标签:SpringBoot,private,job,Value,import,xxlJobSpringExecutor,任务调度,xxl 来源: https://www.cnblogs.com/heart55/p/16284161.html