基于Nacos进行数据中心的配置,发现在Nacos管理后台修改了配置之后,对应的微服务并没有生效。

但日志中倒是输出了信息,说明客户端已经接收到对应的更新事件了:

2020-06-23 15:35:47.432  INFO 19772 --- [f4-0e9f2e3a81ea] c.a.n.client.config.impl.ClientWorker    : [fixed-127.0.0.1_8848-362ecf23-2a9d-4667-90f4-0e9f2e3a81ea] [polling-resp] config changed. dataId=zsa-dwh.yml, group=DEFAULT_GROUP, tenant=362ecf23-2a9d-4667-90f4-0e9f2e3a81ea
2020-06-23 15:35:47.439  INFO 19772 --- [f4-0e9f2e3a81ea] c.a.n.client.config.impl.ClientWorker    : [fixed-127.0.0.1_8848-362ecf23-2a9d-4667-90f4-0e9f2e3a81ea] [data-received] dataId=zsa-dwh.yml, group=DEFAULT_GROUP, tenant=362ecf23-2a9d-4667-90f4-0e9f2e3a81ea, md5=04f4cefd78a9dfaace773483cff7b5bd, content=spring:
  profiles:
  redis:
    host: 192.168.10.121
    port: 6379
    password: 1234

###########...

针对这种情况,有两种原因:第一,配置原因,第二,框架兼容性原因;

配置原因

不同版本的Nacos在Spring Cloud集成中是不一样的,比如1.3.x版本进行集成时,对应的类使用@RefreshScope注解即可,但在1.4.x版本中,则需要将对应的属性上添加@Value注解。

@RefreshScope
// @ConfigurationProperties(prefix = "user")
@component
@DaTa
public class User {
   @Value("${user.name}")
   private String name;
}

其中@Value和@ConfigurationProperties(prefix = “user”)可替换使用,功能相似,都是将配置中的值赋值给字段。

兼容原因

兼容性的原因就是Spring Boot、Spring Cloud、Spring Cloud Alibaba和Nacos之前存在兼容性问题。

比如:可能是springboot的版本跟nacos-config版本差异大(springboot2.3.4,nacos-config2.2.3没问题)。

spring cloud 版本:2.2.0.RELEASE、nacos 版本:2.2.0.RELEASE。在idea内无法刷新配置中心数据,以jar运行可以正常刷新。

另外就是添加强制刷新试一试:

cloud:
   nacos:
     config:
       # 配置中心地址
       server-addr: 192.168.88.5:8848
       # 配置文件格式
       file-extension: yaml
       # 共享配置
       shared-configs:
         - data-id : demo-default-${spring.profiles.active}.yaml
           # 让扩展配置刷新
           refresh : true


nacos配置中心刷新数据不生效插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2021/08/04/nacos-config/