读取server上的配置

我这里图省事,直接写到启动类run方法里面了, 实际工作中你们需要写到Listener里面

  1. import com.alibaba.nacos.api.NacosFactory;
  2. import com.alibaba.nacos.api.config.ConfigService;
  3. import com.alibaba.nacos.api.config.listener.Listener;
  4. import com.alibaba.nacos.api.exception.NacosException;
  5. import org.springframework.boot.SpringApplication;
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;
  7. import java.util.Properties;
  8. import java.util.concurrent.Executor;
  9. @SpringBootApplication
  10. public class NacosDemoApplication {
  11. // 原生sdk读取配置文件的值,我这里图省事,直接写到启动类run方法里面了, 实际工作中你们需要写到Listener里面
  12. public static void main(String[] args) {
  13. SpringApplication.run(NacosDemoApplication.class, args);
  14. String serverAddr="zjj101:8848"; //连接到目标服务的地址
  15. String dataId="example"; //指定dataid、 groupid
  16. String groupId="DEFAULT_GROUP";
  17. Properties properties=new Properties();
  18. properties.put("serverAddr",serverAddr);
  19. try {
  20. //ConfigService-> NacosConfigService
  21. ConfigService configService= NacosFactory.createConfigService(properties);
  22. /**
  23. * 参数3 ,客户端和服务端连接的超时时间
  24. */
  25. String content=configService.getConfig(dataId,groupId,3000);
  26. System.out.println(content);
  27. configService.addListener(dataId, groupId, new Listener() {
  28. @Override
  29. public Executor getExecutor() {
  30. return null;
  31. }
  32. /**
  33. * 如果Nacos节点发生变化的话就会触发这个回调.
  34. * @param configInfo
  35. */
  36. @Override
  37. public void receiveConfigInfo(String configInfo) {
  38. System.out.println("触发回调了");
  39. System.out.println(configInfo);
  40. }
  41. });
  42. } catch (NacosException e) {
  43. e.printStackTrace();
  44. }
  45. }
  46. }

一启动项目的时候,就会读取nacos-server上面的值

image.png

启动项目之后就会读到
image.png

多个配置是用\r\n 分开的

image.png
修改新的值之后,点击发布,就会触发回调 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服务多了个配置
image.png
image.png

删除配置


    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);

    }

执行代码之前,发现有这个配置,
image.png

执行代码之后,发现配置已经被删除了.
image.png

发布配置

 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());