feign
简单使用
由上面可以看到,ribbon负责负载均衡,每次都是通过restTemplete来实现远程服务调用,这样操作起来比较麻烦,我们能不能像以前一样,直接通过调用serverice,来实现某项操作呢,这时feign就出现了。feign默认集成了hystrix,相当于把ribbon和hystrix的功能都封装到了一起,使用起来更加方便,我们只需要添加@EnableFeignClients和@FeignClient注解即可。废话不多说,直接看代码。
- 添加依赖
由于demo_api和demo_web都需要feign,所以定义添加到demo_parent中。1 <!-- feign -->
2 <dependency>
3 <groupId>org.springframework.cloud</groupId>
4 <artifactId>spring-cloud-starter-openfeign</artifactId>
5 </dependency>
复制代码
测试:1 @Autowired 2 RestTemplate restTemplate; 3 @Autowired 4 UserService userService; 5 //@HystrixCommand(commandProperties = {@HystrixProperty(name = //"execution.isolation.thread.timeoutInMilliseconds",value="3000")}, 6 //fallbackMethod = "requestError" 7 //) 8 @GetMapping("getUser") 9 public BaseResult getUser(Integer id) { 10 //BaseResult baseResult = restTemplate.getForObject("http://USER/user/get/1", BaseResult.class); 11// try { 12// Thread.sleep(5000); 13// } catch (InterruptedException e) { 14// e.printStackTrace(); 15// } 16 BaseResult baseResult = userService.get(id); 17 return baseResult; 18 } 复制代码
feign_ceshi1.png熔断器
由上面我们知道,feign默认集成了Hystrix,但是默认是关闭状态的,我们需要在yml配置文件中开启hystrix。
添加完成后,我们就可以做熔断降级的事情了,上面hystrix那一章我们写的是单个方法的降级,这次我们做所有服务的统一降级,首先需要在UserService接口上添加上@FeignClient(value = “USER”,fallbackFactory = MyFallbackFactory.class),然后编写我们自己指定的MyFallBackFactory类,代码如下:1feign: 2 hystrix: 3 enabled: true 复制代码
测试:1package com.lytw13.demo.fallback; 2 3import com.lytw13.demo.model.BaseResult; 4import com.lytw13.demo.service.UserService; 5import feign.hystrix.FallbackFactory; 6import org.springframework.stereotype.Component; 7import org.springframework.web.bind.annotation.PathVariable; 8 9@Component 10public class MyFallbackFactory implements FallbackFactory<UserService> { 11 @Override 12 public UserService create(Throwable cause) { 13 return new UserService() { 14 @Override 15 public BaseResult get(@PathVariable("id") Integer id) { 16 return new BaseResult(400,"服务器访问人数过多,请稍候访问",null); 17 } 18 19 @Override 20 public BaseResult list() { 21 return new BaseResult(400,"服务器访问人数过多,请稍候访问",null); 22 } 23 }; 24 } 25} 复制代码
feign_ceshi2.png
作者:lytw1315
链接:https://juejin.im/post/5df8e0eb6fb9a016153de873
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。