前言:
百度了很久,看了很多博客,按照上面的来,都没能跑成功,最后根据各种异常去查询问题,根据问题说明,按照里面说的再去修改配置,折腾了不少时间,终于成功了,感谢!!
一、准备环境省略
二、xxl-job 源码下载
https://github.com/xuxueli/xxl-job.git
三、修改配置文件
1、方式一
1.1 xxl-job-admin 下的pom配置文件加入以下配置:
<!-- 启用 nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2021.1</version>
</dependency>
<!-- 不引入这个,启动项目的时候,读取不到nacos的配置文件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.0.1</version>
</dependency>
1.2 其实spring boot 版本需要对应 com.alibaba.cloud 的 nacos 版本;版本配置也可以使用
${nacos.version} 的方式,配置在最顶层的pom文件即可,此方式在这里不多做赘述。
1.3 修改 xxl-job-admin 下的 application.properties 文件:
server.port=8848
spring.profiles=dev,default
nacos.config.bootstrap.enable=true
nacos.config.server-addr=127.0.0.1:8848
nacos.config.data-id=application.properties
nacos.config.group=xxl-job
nacos.config.type=properties
nacos.config.auto-refresh=true
1.4 在 nacos 上添加配置文件,其实就是那份配置文件放到了这上面,其它的不变;但是要注意xxl-job-admin下的application.properties配置的data-id、group要和 nacos 的一致。
1.5 以上配置完成,正常启动项目就可以了;不过这种方式,不能把项目注册到nacos服务里面去
2、方式二
2.1 前两个步骤与方式一的1.1和1.2 一致
2.2 在xxl-job-admin 的 resources 添加 bootstrap.yml 和 bootstrap-dev.yml 文件
2.3 bootstrap.yml 配置文件配置如下:(其实配置文件分层作用的,根据自己项目来就行)
server:
port: 9999 # Tomcat
servlet.context-path: /xxl-job-admin
# Spring
spring:
# 解决bean冲突问题,此项目可不配置此项
main.allow-bean-definition-overriding: true
application:
# 应用名称
name: xxl-job
messages:
basename: i18n/messages
profiles:
# 应用环境
active: dev
2.4 bootstrap-dev.yml 配置文件如下:
nacos:
server-addr: 127.0.0.1:8848
# name-space: dev
server-group: DEFAULT_GROUP #服务分组
config-group: xxl-job #配置在不同分组, 用于区分不同服务的配置文件
# Spring
spring:
cloud:
bootstrap.enabled: true
nacos:
discovery: # 服务注册发现
# 多网卡指定服务ip
#ip: 127.0.0.1
# 注册中心服务器地址
server-addr: ${nacos.server-addr}
# namespace: ${nacos.name-space}
heart-beat-interval: 3000 # 心跳间隔ms
heart-beat-timeout: 10000 # 心跳超时ms
group: ${nacos.server-group} # 服务分组 默认DEFAULT_GROUP
metadata: # 元数据 提供描述信息, 如服务版本、权重、容灾策略等等自定义标签
version: v1
#instance: local
config: # 配置中心
# 配置中心服务器地址
server-addr: ${nacos.server-addr}
# namespace: ${nacos.name-space}
group: ${nacos.config-group}
prefix: application
file-extension: yaml
2.5 因为注释掉了name-space的配置,nacos 的配置文件就添加在了 public 空间下,但用的dev环境,那 data-id 原本是 application.yaml 的就要改为 application-dev.yaml。nacos 添加配置如下:
management:
health:
mail:
enabled: false
server:
servlet:
context-path: /actuator
mybatis:
mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
auto-commit: true
connection-test-query: SELECT 1
connection-timeout: 10000
idle-timeout: 30000
max-lifetime: 900000
maximum-pool-size: 30
minimum-idle: 10
pool-name: HikariCP
validation-timeout: 1000
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password: 123456
freemarker:
charset: UTF-8
request-context-attribute: request
settings:
number_format: 0.##########
suffix: .ftl
templateLoaderPath: classpath:/templates/
mail:
from: xxx@qq.com
host: smtp.qq.com
password: xxx
port: 25
properties:
mail:
smtp:
auth: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
starttls:
enable: true
required: true
username: xxx@qq.com
mvc:
servlet:
load-on-startup: 0
static-path-pattern: /static/**
resources:
static-locations: classpath:/static/
xxl:
job:
accessToken: ''
i18n: zh_CN
logretentiondays: 30
triggerpool:
fast:
max: 200
slow:
max: 100
2.6 以上配置完成后,正常启动项目就可以了,项目启动完成,这时打开nacos,在服务管理下的服务列表就可以看到xxl-job的服务了。