nacos配置中心刷新数据不生效
基于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
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接