排查思路:
参考:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
排查配置文件中的配置,注意配置与代码中注入的格式保持一致
参考配置:
# 开启监听和自动刷新,动态感知配置变化,默认值:true
spring.cloud.nacos.config.refresh-enabled=true
可参考对应的代码配置:
注意spring.cloud.nacos.config.extension-configs配置格式,参考:
spring:
cloud:
nacos:
config:
file-extension: yml
server-addr:
namespace:
group: DEFAULT_GROUP
# 注意下面这行配置
extension-configs:
- data-id: base.yml
refresh: true
- data-id: mysqlMaster.yaml
refresh: true
refresh-enabled: true
bootstrap.yml中配置了地址、命名空间、分组等,参考如下:
cloud:
nacos:
config:
server-addr: xx.xx.xxx:8888
file-extension: yaml
#命名空间
namespace: wwb
#分组
group: DEFAULT_GROUP
#从nacos读取配置项的超时时间
timeout: 5000
#长轮训超时时间
config-long-poll-timeout: 1000
#重试时间
config-retry-time: 100000
#长轮询重试次数
max-retry: 3
#开启监听和自动刷新
refresh-enabled: true
enable-remote-sync-config: true
特别注意,namespace的配置对应的是nacos中配置文件的ID,如图:
本地的一些properties配置文件需要移除,否则影响启动时的配置加载
参考:
spring:
cloud:
nacos:
discovery:
# Nacos的服务注册地址,可以配置多个,逗号分隔
server-addr: xxx.xxx.xxx:8888
# 服务注册到Nacos上的名称,一般不用配置
#service: coupon-customer-serv
# nacos客户端向服务端发送心跳的时间间隔,时间单位其实是ms
heart-beat-interval: 5000
# 服务端没有接受到客户端心跳请求就将其设为不健康的时间间隔,默认为15s
# 注:推荐值该值为15s即可,如果有的业务线希望服务下线或者出故障时希望尽快被发现,可以适当减少该值
heart-beat-timeout: 20000
# [注意] 这个IP地址如果更换网络后变化,会导致服务调用失败,建议先不要设置
# ip: 172.0.0.888
# 元数据部分 - 可以自己随便定制
#metadata:
# mydata: abc
# 客户端在启动时是否读取本地配置项(一个文件)来获取服务列表
# 注:推荐该值为false,若改成true。则客户端会在本地的一个文件中保存服务信息,当下次宕机启动时,会优先读取本地的配置对外提供服务。
naming-load-cache-at-start: false
# 创建不同的集群
#cluster-name: Cluster-A
# 命名空间ID,Nacos通过不同的命名空间来区分不同的环境,进行数据隔离,
# 服务消费时只能消费到对应命名空间下的服务。
# [注意]需要在nacos-server中创建好namespace,然后把id copy进来
namespace: wwb
# [注意]两个服务如果存在上下游调用关系,必须配置相同的group才能发起访问
group: DEFAULT_GROUP
# 向注册中心注册服务,默认为true
# 如果只消费服务,不作为服务提供方,倒是可以设置成false,减少开销
register-enabled: true
特别关注:server-addr、namespace、group的这三个配置