nacos-discovery-spring-boot-starter 实现服务的注册与发现
nacos 启动可参考 https://blog.csdn.net/qq_41538097/article/details/123858353
nacos-config-spring-boot-starter 配置动态变更参考 https://blog.csdn.net/qq_41538097/article/details/123896966
1、导入 nacos-discovery-spring-boot-starter
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.10</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.10</version>
</dependency>
2、添加配置
服务注册名和应用名相同,必须配置 nacos.config.server-addr: 否则启动报错server error: such as timeout. Request nacos server failed:
server:
port: 20001
nacos:
discovery:
#server-addr: 42.193.0.90:8848
auto-register: true
username: nacos
password: nacos
namespace: 2022-4-1-dev
register:
clusterName: SPRINGBOOT
enabled: true
ephemeral: true
groupName: DEFAULT_GROUP
healthy: true
ip: 127.0.0.1
metadata:
username: admin
port: 20001
weight: 0.6
config:
server-addr: 42.193.0.90:8848
spring:
application:
name: SPRING_BOOT_SERVICE_DISCOVERY
启动项目可以在 nacos 服务看到服务注册成功
3、获取服务调用接口
启动类不能添加@EnableNacosDiscovery注解,否则服务注册失败
@SpringBootApplication
public class NacosSpringbootDiscoveryExamplesApplication {
public static void main(String[] args) {
SpringApplication.run(NacosSpringbootDiscoveryExamplesApplication.class, args);
}
}
调用 SPRING_BOOT_SERVICE_CONFIG
服务的 http://127.0.0.1:20000/config/teacher 接口
SPRING_BOOT_SERVICE_DISCOVERY
服务调用 SPRING_BOOT_SERVICE_CONFIG
服务的 http://127.0.0.1:20000/config/teacher 接口
RestTemplate 详细使用方法参考 https://blog.csdn.net/qq_41538097/article/details/123560238
@RestController
@RequestMapping("/discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@GetMapping("/select")
public String selectService() throws NacosException {
Instance instance = namingService.selectOneHealthyInstance("SPRING_BOOT_SERVICE_CONFIG", "DEFAULT_GROUP");
String ip = instance.getIp();
int port = instance.getPort();
RestTemplate restTemplate = new RestTemplate();
String url = String.format("http://%s:%d/config/teacher", ip, port);
ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class);
return responseEntity.getBody();
}
}
测试接口 http://127.0.0.1:20001/discovery/select
demo 地址:https://gitee.com/LingYunYe/nacos-example-study/tree/master/nacos-springboot-discovery-examples