官方文档:
https://github.com/nacos-group/nacos-examples/tree/master/nacos-client-example
https://nacos.io/zh-cn/docs/sdk.html
1、引入jar
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.1.0</version>
</dependency>
2、配置管理
import java.util.Properties;
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.AbstractListener;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.client.config.listener.impl.PropertiesListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class NacosConfigExample {
private static final Logger LOGGER = LoggerFactory.getLogger(NacosConfigExample.class);
public static void main(String[] args) throws NacosException {
Properties properties = new Properties();
// Nacos 地址
properties.put(PropertyKeyConst.SERVER_ADDR, "127.0.0.1:8848");
// 命名空间,不指定默认命名空间是空(public)
properties.put(PropertyKeyConst.NAMESPACE, "develop");
ConfigService configService = NacosFactory.createConfigService(properties);
// 指定配置的 DataID 和 Group
String dataId = "testDataId";
String group = "testGroup";
String content = "connectTimeoutInMills=5000";
// 发布配置
boolean publishConfig = configService.publishConfig(dataId, group, content);
LOGGER.info("publishConfig: {}", publishConfig);
wait2Sync();
// 查询配置
String config = configService.getConfig(dataId, group, 5000);
LOGGER.info("getConfig: {}", config);
// 监听配置
configService.addListener(dataId, group, new PropertiesListener() {
@Override
public void innerReceive(Properties properties) {
// 由于properties对象结构,默认反序列化
LOGGER.info("innerReceive: {}", properties);
}
});
configService.addListener(dataId, group, new AbstractListener() {
@Override
public void receiveConfigInfo(String s) {
// 如果是json/yaml/pojo对象,可以根据需要做反序列化
LOGGER.info("innerReceive: {}", s);
}
});
// 更新配置
boolean updateConfig = configService.publishConfig(dataId, group, "connectTimeoutInMills=3000");
LOGGER.info("updateConfig: {}", updateConfig);
wait2Sync();
// 删除配置
boolean removeConfig = configService.removeConfig(dataId, group);
LOGGER.info("removeConfig: {}", removeConfig);
wait2Sync();
config = configService.getConfig(dataId, group, 5000);
LOGGER.info("getConfig: {}", config);
}
private static void wait2Sync() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// ignore
}
}
}