本文共 1880 字,大约阅读时间需要 6 分钟。
Feign除了提供Hystrix和Ribbon两者的功能之外,还提供了一种声明式的web服务端定义方式。
//注意是openfeignorg.springframework.cloud spring-cloud-starter-openfeign
springcloud Feign是一个工具,它不仅整合了ribbon和hystrix两个强大功能,还提供了一种声明式的web服务端定义方式。查看该依赖包,默认引入了Ribbon和Hystrix,即负载均衡和熔断器的依赖。
Feign提供了可插拔的注解支持,只需给接口添加注解配置,即可完成对服务提供方的接口绑定。@EnableFeignClients
注解开启Feign 客户端的功能。@FeignClient
注解,来声明一个Feign 客户端,添加@EnableFeignClients注解会自动扫描添加了@FeignClient注解的接口value为远程调用其他服务的服务名
//在UserServiceFeign接口内部,有个sayHello的方法,该方法通过Feign来调用my-service服务的/demo/hello接口@FeignClient(value = "my-service",configuration = FeignConfig.class, path="/demo")public interface UserServiceFeign{ @GetMapping(value="/hello") String sayHello(@RequestParam(value="name")String name);}
Feign的客户端负载均衡是通过Ribbon实现的,在定义Feign客户端时,使用了@FeignClient注解,初始化过程中,Feign会根据注解的name或value属性指定的服务名,自动创建一个同名的Ribbon客户端。
工程中改变依赖可以改变网络请求框架:
或 com.netflix.feign feign-httpclient RELEASE com.netflix.feign feign-okhttp RELEASE
Feign默认已经对Ribbon客户端负载均衡做了支持。
Feign默认实现了请求的重试机制。Feign的超时时间是指Ribbon配置的超时时间。需要注意一点,Feign的超时与Hystrix的超时是两个概念,熔断是根据这两个时间设置的最小时间来熔断的。
ribbon: ReadTimeout: 10000 ConnectTimeout: 10000
默认情况下,Feign会将所有Feign客户端的方法都封装到Hystrix命令中进行服务保护。
设置全局的超时时间,首先需要保证feign.hystrix.enabled=true
feign: hystrix: enabled: truehystrix: command: default: execution: isolation: strategy: SEMAPHORE thread: timeoutInMilliseconds: 15000
服务降级配置
转载地址:http://jbaxb.baihongyu.com/