在此查看完整示例代码
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.0.9</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-openapi</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>2.0.0</version>
</dependency>
<dubbo:config-center address="apollo://localhost:8080"/>
或者
dubbo
config-center
address: apollo://localhost:8080
或者
dubbo.config-center.address=apollo://localhost:8080
或者
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("apollo://localhost:8080");
Apollo中的一个核心概念是命名空间 - namespace,和上面 Zookeeper、Nacos 的 namespace 概念不同,因此使用方式上也比较特殊些,建议充分了解 Apollo 自身的用法后再阅读以下文档内容。
但总的来说,对 Apollo 的适配而言:
<dubbo:config-center group="demo-provider" address="apollo://localhost:8080"/>
config-center 的 group
决定了 Apollo 读取外部化配置 dubbo.properties
文件的位置:
dubbo
namespace 读取配置,用户须将外部化配置写在 dubbo
namespace 下。如以下示例是用的默认 group=‘dubbo’ 的全局外部化配置,即该配置可被所有应用读取到。
如果配置 group=‘应用名’ 则是应用特有配置,只有该应用可以读取到。
关于外部化文件配置托管,相当于是把
dubbo.properties
配置文件的内容存储在了 Apollo 中。每个应用都可以通过关联共享的dubbo
namespace 继承公共配置, 进而可以单独覆盖个别配置项。
流量治理规则一定都是全局共享的,因此每个应用内的 namespace 配置都应该保持一致。
<dubbo:config-center namespace="governance" address="apollo://localhost:8080"/>
config-center 的 namespace
决定了 Apollo 存取 流量治理规则
的位置:
dubbo
namespace 存取配置,须治理规则写在 dubbo
namespace 下。如以下示例是通过 namespace='governance'
将流量治理规则放在了 governance
namespace 下。
当前 Dubbo 适配了 env、apollo.meta、apollo.cluster、apollo.id 等特有配置项,可通过 config-center 的扩展参数进行配置。
如
dubbo.config-center.address=apollo://localhost:8080
或者
dubbo.config-center.prameters.apollo.meta=xxx
dubbo.config-center.prameters.env=xxx