SpringCloud-Nacos-2.注册与发现笔记
目录
3.主程序添加@EnableDiscoveryClient,开启服务注册发现功能
3.主配置类添加@EnableDiscoveryClient.
项目地址
父工程nacos
pom依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
生产者
1.pom文件
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.application.yml
server:
port: 8085
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: nacosProducer8085
3.主程序添加@EnableDiscoveryClient,开启服务注册发现功能
package com.wzx;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication8085 {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication8085.class, args);
}
}
4.启动主程序.
访问http://localhost:8848/nacos,账号:nacos 密码:nacos
5.服务注册成功。
6.添加controller
@RestController("/nacos")
public class NacosProducerController {
@GetMapping("/producer")
public String nacosProducerHello(@RequestParam("user") String user){
return "Hello:"+user;
}
}
消费者
1.pom文件
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.application.yml
server:
port: 8086
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: comsuer-8086
3.主配置类添加@EnableDiscoveryClient.
注入RestTesmplate,并添加@LoadBalanced注解,与Ribbon集成,开启负载均衡。
@SpringBootApplication
@EnableDiscoveryClient
public class ComsuerApplication8086 {
public static void main(String[] args) {
SpringApplication.run(ComsuerApplication8086.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
4.controller
@RestController
@RequestMapping("/nacos")
public class ComsuerHelloController {
@Autowired
RestTemplate restTemplate;
@GetMapping("/comsuer")
public String comsuerHello(@RequestParam("user") String user){
String url="http://producer-8085/nacos/producer?user="+user;
return restTemplate.getForObject(url,String.class);
}
}
5.启动主程序
ComsuerApplication8086
6.访问nacos,注册成功
7.调用消费者
访问地址:http://localhost:8086/nacos/comsuer?user=zhansan
消费者调用生产者成功.
调用生产者方式
1.RestTemplate与@LoadBalanced
2.使用Feign
好处,调用的使用不在拼接url字符串,集成ribbon,hystrix,默认集成了负载均衡,熔断
1.消费者导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.添加@EnableFeignClients,开启feign功能
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ComsuerApplication8086 {
public static void main(String[] args) {
SpringApplication.run(ComsuerApplication8086.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
3.编写Feign接口
value:填写应用名,contextId接口注册为bean的唯一名称,path,请求接口路径
@FeignClient(value = "producer-8085",contextId="producerHelloFeign",path = "/nacos")
public interface ProducerHelloFeign {
@GetMapping("/producer")
public String nacosProducerHello(@RequestParam("user") String user);
}
4.controller
@RestController
@RequestMapping("/nacos")
public class ComsuerHelloController {
@Autowired
ProducerHelloFeign producerHelloFeign;
@GetMapping("/comsuerFeign")
public String comsuerFeign(@RequestParam("user") String user){
return producerHelloFeign.nacosProducerHello(user);
}
}
5.启动主程序
6.访问地址:http://localhost:8086/nacos/comsuerFeign?user=zhansan