2019独角兽企业重金招聘Python工程师标准>>>
Feign包含了Ribbon和Hystrix,这个在实战中才慢慢体会到它的意义,所谓的包含并不是Feign的jar包包含有Ribbon和Hystrix的jar包这种物理上的包含,而是Feign的功能包含了其他两者的功能这种逻辑上的包含。简言之:Feign能干Ribbon和Hystrix的事情,但是要用Ribbon和Hystrix自带的注解必须要引入相应的jar包才可以。
1.引入依赖
2.配置文件中开启服务
feign.hystrix.enabled=true
3.启动类注解开启
@EnableFeignClients
public class DemoFeignApplication {
public static void main(String[] args) {
SpringApplication.run(DemoFeignApplication.class, args);
}
}
4.feign 是基于接口的注解方式实现的新建一个接口
@FeignClient(value = "two-client",fallback = SchedualServiceHiHystric.class)
public interface UserService {
@RequestMapping("/home/indexd")
String getIndex();
}
FeignClient("two-client"")注解里eureka-client指的是提供服务的服务名
fallback 自定义异常类
5.异常类的实现
@Component
public class SchedualServiceHiHystric implements UserService {
@Override
public String getIndex() {
return "服务没有开启";
}
}
6.请求controller
@Autowired
private UserService userService;
@RequestMapping("/index")
public String index(){
logger.info("index方法");
return userService.getIndex();
}
7.结果,当调用的服务端没有开启的时候
注释:1.maven的依赖一定要匹配,不然版本不匹配就会报很多无法预知的异常(本人遇到很坑)
2.配置贴出来供参考
#server.port=8013
#eureka.client.service-url.defaultZone=http://localhost:8000/eureka/
#spring.application.name=three-client
#feign.hystrix.enabled=true
server:
port: 8013
eureka:
client:
service-url:
defaultZone: http://localhost:8000/eureka/
spring:
application:
name: three-client
feign:
hystrix:
enabled: true
hystrix:
threadpool:
default:
coreSize: 500 #缺省为10
stream:
maxConcurrentConnections: 20
bus:
enabled: true
command:
default:
execution:
timeout:
enabled: false
isolation:
thread:
timeoutInMilliseconds: 60000
ribbon:
eureka:
enabled: true