①:添加依赖(服务调用方)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
②:是否需要覆盖默认配置(比如使Feign的熔断机制生效)
feign:
hystrix:
enabled: true # 开启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();
}
}
- SpringCloud 流程 Feignspringcloud流程feign springcloud-feign springcloud feign resttemplate springcloud ribbon feign feign springcloud-feign springcloud 20 springcloud-feign springcloud消费者feign feign springcloud-feign springcloud接口 feign springcloud-feign springcloud 19 springcloud header feign springcloud源码 流程 文件