读取server上的配置
我这里图省事,直接写到启动类run方法里面了, 实际工作中你们需要写到Listener里面
import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.Properties;
import java.util.concurrent.Executor;
@SpringBootApplication
public class NacosDemoApplication {
// 原生sdk读取配置文件的值,我这里图省事,直接写到启动类run方法里面了, 实际工作中你们需要写到Listener里面
public static void main(String[] args) {
SpringApplication.run(NacosDemoApplication.class, args);
String serverAddr="zjj101:8848"; //连接到目标服务的地址
String dataId="example"; //指定dataid、 groupid
String groupId="DEFAULT_GROUP";
Properties properties=new Properties();
properties.put("serverAddr",serverAddr);
try {
//ConfigService-> NacosConfigService
ConfigService configService= NacosFactory.createConfigService(properties);
/**
* 参数3 ,客户端和服务端连接的超时时间
*/
String content=configService.getConfig(dataId,groupId,3000);
System.out.println(content);
configService.addListener(dataId, groupId, new Listener() {
@Override
public Executor getExecutor() {
return null;
}
/**
* 如果Nacos节点发生变化的话就会触发这个回调.
* @param configInfo
*/
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("触发回调了");
System.out.println(configInfo);
}
});
} catch (NacosException e) {
e.printStackTrace();
}
}
}
一启动项目的时候,就会读取nacos-server上面的值
启动项目之后就会读到
多个配置是用\r\n 分开的
修改新的值之后,点击发布,就会触发回调 receiveConfigInfo 方法就会被执行到 ,就会立马输出新的值, 输出的结果是String类型的,多个值之间还是用\r\n 分开的
发布配置
public static void main(String[] args) throws NacosException, InterruptedException {
String serverAddr = "zjj101:8848";
String dataId = "nacos-config-demo.yaml";
String group = "DEFAULT_GROUP";
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
//获取配置中心服务
ConfigService configService = NacosFactory.createConfigService(properties);
//发布配置
boolean isPublishOk = configService.publishConfig(dataId, group, "content");
}
执行完了之后,发现nacos服务多了个配置
删除配置
public static void main(String[] args) throws NacosException, InterruptedException {
String serverAddr = "zjj101:8848";
String dataId = "nacos-config-demo.yaml";
String group = "DEFAULT_GROUP";
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
//获取配置中心服务
ConfigService configService = NacosFactory.createConfigService(properties);
boolean isRemoveOk = configService.removeConfig(dataId, group);
System.out.println(isRemoveOk);
}
执行代码之前,发现有这个配置,
执行代码之后,发现配置已经被删除了.
发布配置
String serverAddr = "zjj101:8848";
String dataId = "nacos-config-demo.yaml";
String group = "DEFAULT_GROUP";
Properties properties = new Properties();
properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr);
//获取配置中心服务
ConfigService configService = NacosFactory.createConfigService(properties);
//从配置中心拉取配置
String content = configService.getConfig(dataId, group, 5000);
System.out.println(content);
//发布配置
boolean isPublishOk = configService.publishConfig(dataId, group, "content");
//System.out.println(isPublishOk);
//发送properties格式
configService.publishConfig(dataId,group,"common.age=30", ConfigType.PROPERTIES.getType());