Nacos配置中心
- nacos的配置中心可以通过Rest风格的API配置也可以通过页面直接操作配置,官网api地址:https://nacos.io/zh-cn/docs/open-api.html#1.1
- 一般推荐直接通过nacos提供的页面进行配置修改,下面给出的是其他的实现方式
NacosAPI测试-利用linux的curl命令发送了一个post请求
```
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=consumer-dev.properties&group=DEFAULT_GROUP&content=redis.host=localhost%0Aredis.port=6379"
```
NacosAPI测试-查询实例列表API
/nacos/v1/ns/instance/list
- get请求,直接调用
http://192.168.154.129:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=1
- 通过代码RestTemplate实现
//引导类加入RestTemplateBean注入 @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } //创建一个NacosController的controller类 @RestController @RequestMapping("nacos") public class NacosController { @Autowired RestTemplate restTemplate; @GetMapping("serviceList") public Map gerServiceList(@RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize) { System.out.println("pageNo = " + pageNo); System.out.println("pageSize = " + pageSize); String url = "http://192.168.154.129:8848/nacos/v1/ns/service/list?pageNo=" + pageNo + "&pageSize=" + pageSize; Map map = restTemplate.getForObject(url, Map.class); return map; } } //重启服务,访问以下链接: http://192.168.154.129:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=1 //这里这里就可以读取到服务器的服务列表信息 { "doms": [ "user-service" ], "count": 2 } //这里遇到了一个坑,启动引导类时,需要把@LoadBalanced负载均衡关掉,否则会报:java.lang.IllegalStateException: No instances available for 127.0.0.1错误
NacosAPI测试-发布配置API
/nacos/v1/cs/configs
- apizz直接访问接口
http://192.168.154.129:8848/nacos/v1/cs/configs body内容: dataId:userservice-dev.yaml group:DEFAULT_GROUP content:test: redis: host: localhost port: 6380 type:YAML
- nacos目前存在小BUG,不支持yml只支持yaml,发布配置之后去nacos页面的配置管理中将配置格式改为YAML格式,并把内容格式进行修改即可
yml文件设置配置中心地址
- 在nacos的配置中心添加一个consumer配置
Data ID :consumerservice-dev.yaml # 这里的名称格式要和后面的bootstrap.yml的匹配 test: redis: host: localhost port: 6380
- 在conusmer_service中添加一个Redis类,并将此类放入IOC容器
@Component @Data @ConfigurationProperties(prefix = "test.redis")//读取配置文件的属性配置 public class RedisProperties { private String host; private int port; }
- 在controller层创建一个方法,用来返回结果
@GetMapping("/hello") public RedisProperties disUserById() { return redisProperties; }
- 重启consumer_service,浏览器访问这个方法即可