nacos-server的服务注册与发现的源码,
- https://cloud.tencent.com/developer/article/1881623
按照官方网站搭建的demo过程如下:
官方网站: https://github.com/alibaba/nacos
案例demo参考网站: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery-en
使用依赖
<properties>
<spring-cloud.version>2020.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
<springfox.version>3.0.0</springfox.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
@EnableAutoConfiguration
@EnableDiscoveryClient
@ComponentScan
public class Provider {
public static void main(String[] args) {
SpringApplication.run(Provider.class);
}
}
nacos控制界面 -> 服务管理 -> 服务列表
另引入了springfox-boot-starter
jar包,在http://127.0.0.1:8080/swagger-ui/index.html中看到接口
同Provider
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
server:
port: 8090
@SpringBootApplication
@EnableDiscoveryClient
public class Consumer {
public static void main(String[] args) {
SpringApplication.run(Consumer.class);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Autowired
TestService testService;
@Bean
public ApplicationRunner applicationRunner(){
return arguments -> {
testService.echo();
};
}
}
@Service
public class TestService {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@Value("${spring.application.name}")
private String appName;
public void echo() {
List<ServiceInstance> instances = discoveryClient.getInstances("nacos-provider");
ServiceInstance serviceInstance = instances.get(0);
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String path = String.format("http://%s:%s/echo/%s", host, port, appName);
System.out.println("request path:" +path);
String object = restTemplate.getForObject(path, String.class);
System.out.println("object = " + object);
}
}
request path: http://***:8080/echo/nacos-consumer
object = Hello Nacos Discovery nacos-consumer
nacos控制台展示:
nacos-provider | DEFAULT_GROUP | 1 | 1 | 1 | false | 详情|示例代码|订阅者|删除 |
---|---|---|---|---|---|---|
nacos-consumer | DEFAULT_GROUP | 1 | 1 | 1 | false | 详情|示例代码|订阅者|删除 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。