SpringCloud AliBaBa Nacos中Feign的使用
①:添加依赖(服务调用方)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version> <!-- 指定Nacos依赖的版本 -->
</dependency>
<!-- <!– OpenFeign 依赖 –>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.1.RELEASE</version> <!-- 指定OpenFeign依赖的版本 -->
</dependency>
服务提供方依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.1.RELEASE</version> <!-- 指定Nacos依赖的版本 -->
</dependency>
②:是否需要覆盖默认配置(比如使Feign的熔断机制生效)
配置文件中的修改
服务调用方
spring.application.name=consumer 这个如果有拼接的话,不能出现"_" spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 指定nacos的地址,服务提供方和消费方去注册
服务提供方
spring.application.name=provider spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
配置文件上就加这么多
这个是用了feign的熔断功能
feign:
hystrix:
enabled: true # 开启Feign的熔断功能
③:在启动类上添加注解
consumer要调用就要在启动类上加注解开启feign
@EnableFeignClients //开启Feign功能
在服务提供方就不需要加什么注解了。
④:编写Fiegn的客户端(以下都是以Feign的熔断机制为例)
//声明这是一个Feign客户端,类似`@Mapper`注解。同时通过`value`属性指定服务名称
//fallback 属性为熔断策略的实现类。熔断策略实现类应实现 Feign 客户端接口,并提供处理熔断逻辑的方法。
@FeignClient(value = "service-provider",fallback = UserFeignClientFallback.class)
public interface UserFeignClient {
//把提供方Controller中对应的方法声明放在这里
@GetMapping("/provider/findById/{id}")
User findById(@PathVariable Integer id);
}
⑤:编写熔断策略(其实就是Fiegn的客户端的一个实现类,实现具体的降级逻辑)
@Component
public class UserFeignClientFallback implements UserFeignClient{
//这里编写的是接口方法中的具体的降级逻辑
@Override
public User findById(Integer id) {
User user = new User();
user.setUsername("系统繁忙,请稍后再试");
return user;
}
}
⑥:Controller层注入并进行调用
@RestController
@RequestMapping("/consumer")
public class UserController {
@Autowired
UserFeignClient userFeignClient;
//这个地方也要指定路径 访问的时候直接用服务调用方的接口访问。
public String findById(@PathVariable Integer id){
User user = userFeignClient.findById(id);
System.out.println(user);
return user.toString();
}
}