nacos 是阿里开源的配置中心/注册中心组件
在spring-boot项目中, 可以使用下面的方法启动nacos config
nacos:
config:
# 使用namespace=public时, 这里不能显示指定. 否则会拿不到数据
# namespace: public
username: admin
password: 12345678
server-addr: 10.0.18.92:8848
group: ${spring.profiles.active}
# common 放通用配置, 可以被${spring.application.name}覆盖
data-ids: ${spring.application.name},common
type: YAML
auto-refresh: true
remote-first: true
enable-remote-sync-config: true
config-long-poll-timeout: 45000
max-retry: 10
config-retry-time: 3500
bootstrap:
# 开启log
enable: true
log-enable: true
最坑的就是这个
namespace: public
public是系统默认的namespace
但是不能在这里制定, 否则会造成nacos客户端向nacos server拿不到config的情况.
这是nacos的一个bug(可以说是命名不规范吧), 具体可以参考其源码
com.alibaba.nacos.client.config.impl.ClientWorker#getServerConfig
public String[] getServerConfig(String dataId, String group, String tenant, long readTimeout)
throws NacosException {
String[] ct = new String[2];
if (StringUtils.isBlank(group)) {
group = Constants.DEFAULT_GROUP;
}
HttpRestResult<String> result = null;
try {
Map<String, String> params = new HashMap<String, String>(3);
if (StringUtils.isBlank(tenant)) {
params.put("