申明式web服務客戶端 Feign配置ribbon與hystrix
feign配置ribbon
全域性配置
直接實用ribbon.<key>=<value>
如 ribbon.ConnectTimeout=500
ribbon.ReadTimeout=5000
指定服務配置
實用 <服務名>.ribbon.<key>=<value>
hello-service.ribbon.ConnectTimeout=500
hello-service.ribbon.ReadTimeout=5000
版本 spring boot 1.5.14
feign配置hystrix
具體詳細程式碼 請參考 申明式web服務客戶端 Feign 基本使用
服務降級配置:
helloService 介面 |
package springcloud.helloserviceapi; import org.springframework.web.bind.annotation.*; @RequestMapping("helloController") public interface HelloService { @RequestMapping(value = "/hello",method = RequestMethod.GET) String hello(); @RequestMapping(value = "/hello1",method = RequestMethod.GET) String hello(@RequestParam("name") String name); @RequestMapping(value = "/hello2",method = RequestMethod.GET) User hello(@RequestHeader("name") String name, @RequestHeader("age") Integer age); /* @RequestMapping(value = "/hello3",method = RequestMethod.POST) String hello(@RequestBody User user);*/ } |
調整feign介面 |
package springcloud.feign; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.*; import springcloud.helloserviceapi.HelloService; import springcloud.helloserviceapi.User; @FeignClient(name = "hello-service",fallback = HelloServiceFallback.class) public interface HelloServiceExtends extends HelloService{ } |
新增 fallback介面 注意 @RequestMapping 必須要更 HelloService 的不一樣,否則會衝突 @RequestMapping("fallback/helloController") |
package springcloud.feign; import feign.hystrix.FallbackFactory; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.*; import springcloud.helloserviceapi.HelloService; import springcloud.helloserviceapi.User; @Component @RequestMapping("fallback/helloController") public class HelloServiceFallback implements HelloServiceExtends{ @Override public String hello() { return "error"; } @Override public String hello(String name) { return null; } @Override public User hello(String name, Integer age) { return null; } } |
結果:
請求壓縮
spring cloud feign 支援對請求與響應進行GZIP,以減少通訊過程中的效能損耗。我們只需要通過
下面兩個引數設定,就能開啟請求與響應的壓縮功能
feign.compression.request.enabled=true
feign.compression.response.enabled=true
feign 的屬性類
@ConfigurationProperties("feign.compression.request")
public class FeignClientEncodingProperties
參考 :
小馬哥 spring cloud 視訊
spring cloud微服務實戰(程式設計師DD)