xxl-job整合nacos
xxl-job是一款优秀的分布式定时任务框架,详情请看https://www.xuxueli.com/xxl-job/
最近需要部署一套xxl-job,本来直接打成jar包部署就行了,但是这样的方式每次修改相关的配置(比如数据库),都比较麻烦,还需要重新打包或者修改命令行启动参数,所以就想借用nacos的配置中心功能来进行动态配置,这样比较简单.
所以本文中主要使用了nacos的配置中心功能,注册中心虽然引入了,但是并没有使用太多,最多起到健康监控的功能,毕竟正常情况下没有其他的地方会调用xxl-job
1. nacos部署
https://github.com/alibaba/nacos/releases 下载对应系统的nacos包即可
以windows为例
解压后进入bin目录启动,启动命令为:
startup.cmd -m standalone
单机模式启动,启动成功后访问localhost:8848/nacos,默认用户名/密码: nacos/nacos
其他问题参见: https://nacos.io/zh-cn/docs/quick-start.html
2. xxl-job改造
拉取xxl-job源码
源码仓库地址 |
Release Download |
我这里以xxl-job 2.3.1版本为基础进行改造,其他版本大同小异
2.1 引入nacos依赖
修改xxl-job-admin模块pom文件,增加如下依赖
<!-- nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- nacos-config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- spring-cloud-bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud-bootstrap.version}</version>
</dependency>
其中版本号如下:
<properties>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
<spring-cloud-bootstrap.version>3.0.1</spring-cloud-bootstrap.version>
</properties>
这里使用2021.0.1.0版本的spring-cloud-alibaba,是根据xxl-job-admin 2.3.1版本的spring-boot版本为2.6.7,根据spring官方的对应关系https://spring.io/projects/spring-cloud 使用此版本,如果与本文中版本不一致,请自行修改.
spring-cloud-starter-bootstrap 引入此依赖是因为spring-cloud 2020版本后默认情况下不会读取bootstrap属性,会导致nacos的配置无法被读取,有两种方法解决,引入此jar包是一种解决办法. 参考: https://www.yuque.com/docs/share/b79576cf-6f1b-4797-91b7-f70e0aa24bcb?# 《SpringCloud与SpringBoot配置文件问题》
2.2 修改配置文件
依赖引入后,需要进行xxl-job-admin模块配置文件的修改,主要增加nacos的配置
spring.application.name=xxl-job-admin
### nacos
# nacos地址
nacos.server-addr=127.0.0.1:8848
# 分组
nacos.group=DEFAULT_GROUP
# 命名空间
nacos.namespace=public
# 服务发现配置
spring.cloud.nacos.discovery.server-addr=${nacos.server-addr}
spring.cloud.nacos.discovery.group=${nacos.group}
spring.cloud.nacos.discovery.namespace=${nacos.namespace}
spring.cloud.nacos.discovery.enabled=true
# 配置中心配置
spring.cloud.nacos.config.server-addr=${nacos.server-addr}
spring.cloud.nacos.config.group=${nacos.group}
spring.cloud.nacos.config.namespace=${nacos.namespace}
spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.file-extension=properties
如果是本地单机启动的nacos,可以简单配置下,如果是正式环境的配置,还需要增加group,namespace等配置,具体参考nacos官网
2.3 nacos增加配置
选择对应的ns后新增配置
data-id的默认规则为:
${prefix}-${spring.profiles.active}.${file-extension}
- prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
- spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
由于没有设置spring.profiles.active,所以我们设置的data-id是 xxl-job-admin.properties
然后将application.properties中的配置信息都放到nacos
程序里只留下nacos的相关配置信息
2.4 测试
启动xxl-job-admin,发现无异常
修改nacos配置中心,端口号为8081,重启xxl-job-admin,发现端口号确实变成了8081,成功.
代码地址: https://github.com/zhangyao-zy/xxl-job/tree/feature/20220906/zhangyao/add_nacos
- 点赞
- 收藏
- 关注作者
评论(0)