Dubbo使用Nacos作为配置中心

如下示例均基于Spring Boot框架环境实现。

启动Nacos

参考Nacos官方文档部署并启动实例。
在使用Nacos作为配置中心时,可以将Dubbo的所有配置信息都保存到Nacos中。

依赖及配置

在服务提供者或服务消费者项目中添加依赖。

1
2
3
4
5
6
<!-- 使用nacos作为配置中心 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.1</version>
</dependency>

同时,在服务提供者或服务消费者项目配置文件(application.yml)中添加如下配置。

1
2
3
4
5
nacos:
config:
server-addr: 192.168.100.232:8848
bootstrap:
enable: true

在启动类中添加注解@NacosPropertySource,再使用注解@NacosValue引用对应的配置项目参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@SpringBootApplication
@EnableDubbo
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class DemoServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DemoServiceConsumerApplication.class, args);
}
}

@Component
public class Task implements CommandLineRunner {
@DubboReference
DemoService demoService;

@NacosValue(value = "${dubbo.application.name}", autoRefreshed = true)
private String dubboApplicationName;

@NacosValue(value = "${timeout}", autoRefreshed = true)
private int timeout;
}

此时就可以将Dubbo的所有配置信息都保存到Nacos中。
如下示例将Dubbo服务的配置信息保存到Nacos中DataId为example的配置项中。

1
2
3
4
5
6
7
8
dubbo.registry.address = nacos://192.168.100.232:8848
dubbo.provider.timeout = 5550
dubbo.registry.simplified = true
dubbo.application.name = dubbo-springboot-demo-consumer
dubbo.protocol.name = dubbo
dubbo.protocol.port = -1
timeout = 300
batch = 1323

【参考】
Dubbo 动态配置中心