本文阐述问题所使用的组件版本分别是,Dubbo:3.2.4,Nacos服务端:2.2.3,Nacos客户端:2.2.4。
在Dubbo3的官方文档中,关于如何使用Nacos作为配置中心的详细介绍参考:Nacos。 但非常沮丧的是我参照文档的描述,并没有成功将Nacos2配置成为Dubbo3项目的配置中心。
期间也看到有人在github上提出相关的问题,但似乎暂时还没有解决办法,详见:springboot nacos dubbo无法正常从nacos读取dubbo初始化配置。最后是参考了Nacos Dubbo SpringBoot 集成 注册中心 配置中心才配置成功的。
前置条件:根据Nacos官方手册部署好Nacos环境。
第一步:添加nacos-config-spring-boot-starter
依赖,需要使用到其中的注解和配置。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.12</version>
</dependency>
第二步:在项目配置文件中添加Nacos作为配置中心的参数。
代码语言:javascript复制nacos:
config:
bootstrap:
enable: true # 必须设置为true,否则启动报错
auto-refresh: true # 必须设置为true,自动刷新变量值才能生效
server-addr: 192.168.2.24:8848 # nacos服务器地址
data-id: consumer.yaml # 在nacos上的配置参数dataId
type: yaml # 在nacos上的配置参数格式,必须与data-id参数格式保持一致
group: DEFAULT_GROUP # 分组名称,如果使用默认值DEFAULT_GROUP,可以不用明确配置
第三步:在项目中使用注解@NacosValue
读取nacos上的配置参数。
假设nacos上配置参数data-id为“consumer.yaml”,内容如下:
user:
id: 1
nickName: lisi
age: 23
则可以在Java代码中使用注解@NacosValue
读取相应的配置参数,如果希望参数值动态刷新,必须设置autoRefreshed
为true。
@NacosValue(value = "${user.id}", autoRefreshed = true)
private String userId;
@NacosValue(value = "${user.nickName}", autoRefreshed = true)
private String userNickName;
最后验证:只要在nacos控制台界面上修改了对应的配置参数之后,在nacos客户端就能及时刷新到最新值。