什么是Feign?
Feign被集成到SpringCloud Netflix模塊,當Eureka,Ribbon集成的時候呢,F(xiàn)eign就具備了負載均衡的功能。Feign本身使用就很簡便,再加上與SpringCloud的整合,將很大程度上降低了我們開發(fā)的工作量。
它是Github上面的一個開源項目,目的是為了簡化WebService客戶端的開發(fā),在使用Feign的時候 可以使用注解來修飾接口,被修飾的接口就具有了訪問webservice的能力,這些注解呢 可以使用Feign的自帶注解,也可以支持使用第三方的注解。Feign還支持插件式的編碼器和解碼器,使用者可以通過這些特性,對請求和響應(yīng)進行封裝和解析。
總之Feign是一個客戶端,F(xiàn)eign可以使用注解來修飾接口,被修飾的接口就有訪問WebService的能力。
例如:@FeignClient。
Spring Cloud Feign 之 Fallback
環(huán)境信息: java 1.8、Spring boot 1.5.10.RELEASE、spring cloud-Edgware.SR3、maven 3.3+
在網(wǎng)絡(luò)請求時,可能會出現(xiàn)異常請求,如果還想在異常情況下使系統(tǒng)可用,那么就需要容錯處理,比如:網(wǎng)絡(luò)請求超時時給用戶提示"Server error"請稍后重試。
Spring Cloud Feign 就是通過Fallback實現(xiàn)的,有兩種方式:
1、在Feign接口層上方標注@FeignClient(value = "zookeeper-server",fallback = FeignFallback.class),并且指定一個實現(xiàn)Feign接口的實現(xiàn)類。
2、在Feign接口上方標注@FeignClient.fallbackFactory = UserFeignFactory.class指定一個實現(xiàn)FallbackFactory<T>工廠接口類。(配合1使用,可以獲取HTTP請求錯誤狀態(tài)碼和信息)