启动Nacos
①下载nacos-server.zip,解压后找到bin目录下的startup.cmd双击运行
下载地址
②访问
http://localhost:8848/nacos
用户名密码:nacos/nacos
生产者注册到Nacos
①创建springboot项目nacos-server导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- SpringCloud的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
②编写配置文件application.yml
myName: nacosProvider
server:
port: 18070
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: http://localhost:8848 #nacos注册中心地址
③编写一个controller
@RestController
@RefreshScope//实现配置自动更新
public class ProviderController {
@Value("${myName}")
private String myName;
@RequestMapping("hello")
public String hello(){
return "hello " + myName;
}
}
④主启动类上添加注解 @EnableDiscoveryClient
⑤启动服务可以看到服务列表注册的服务
⑥可以通过访问http://localhost:18070/hello看到显示的信息
myName从配置文件拿到的。
消费者注册到Nacos
①导入依赖(同生产者一样)
②编写配置文件application.yml
server:
port: 18080
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: http://localhost:8848 #nacos注册中心地址
③编写controller
@RestController
public class ConsumerController {
@GetMapping("hi")
public String hi() {
return "hi provider!";
}
}
④主启动类上添加注解 @EnableDiscoveryClient
⑤启动服务可以看到服务列表注册的服务,同时可以访问路径查看
访问:http://localhost:18080/hi
消费者通过Feign调用生产者
①在消费者pom中,添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
②在消费者主启动类上添加@EnableFeignClients注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
}
③编写feign接口,value是生产者注册到nacos的服务名称
④注入到消费者的controller并调用,更改hi请求方法如下
⑤消费者生产者都重启一下吧,访问消费者的hi请求,会执行生产者的方法
消费者访问路径:http://localhost:18080/hi
发生熔断处理
①创建ProviderFeign接口的实现类
②在消费者的ProviderFeign接口的注解上添加属性fallback
③测试,在生产者的controller层请求方法设置一个异常
④当访问http://localhost:18080/hi时会有提示