目錄
前言
使用
引入依賴
開啟feign
編寫feign客戶端
效果
日志
超時配置
重試機制
攔截器
Fallback兜底返回
引入依賴
編寫兜底實現
連接池
引入依賴
開啟連接池
制作OpenFeign Starter
編寫配置類
自動裝配
前言
在RPC框架中,有openFeign和Dubbo,openFeign是SpringCloud的,而Dubbo是
SpringCloudalibaba的,我們講解openFeign,博主所在公司用的RPC框架也是openFeign,
幾個系統之間相互進行PRC調用,通過制作openFeign starter推送到遠程倉庫,然后通過maven引
用使用feign客戶端進行調用。
SpiringCloud openFeign官網:openFeign
使用
引入依賴
引入spring-cloud-starter-openfeign和spring-cloud-starter-loadbalancer依賴,引入spring-cloud-
starter-loadbalancer主要是做負載均衡,他是一個負載均衡器,在舊版本用的是Ribbon,新版本用
的是這個loadbalancer,當有多個服務實例的時候,根據負載均衡算法自動選取一個,默認是輪
詢。
開啟feign
@EnableFeignClients:啟用Feign客戶端功能,掃描并注冊@FeignClient接口,生成代理類。
編寫feign客戶端
@FeignClient:nacos對應的服務名稱(會根據服務名稱找到ip+端口 進行RPC調用)
效果
訂單服務通過openFeign調用商品服務
日志
如果我們想看調用過程中的詳細日志,我們可以配置openFeign日志,查看到詳細信息。
配置文件中配置feign包下的日志級別為debug,定義一個Bean返回Logger.Level.FULL,表示設置Feign客戶端日志級別為FULL,記錄所有請求和響應的詳細信息。(生產中一般不開啟feign日志)
超時配置
如果請求都超時,在高并發的情況下,請求都阻塞在哪里就會對服務造成雪崩。我們可以對服務超
時進行一些配置,超時配置有連接超時和讀取超時,連接超時默認10秒,讀取超時默認60秒。
配置連接超時和讀取超時,如沒有配置默認使用default默認的配置。
重試機制
openFeign默認是不重試的,可以在配置文件中配置重試機制,如果openFeign在IOC容器里面找
到,會使用IOC里面的配置的。
攔截器
openFeign提供了攔截器,可以對請求和響應進行攔截處理,一般我們進行請求攔截器處理,實現
RequestInterceptor接口,在apply方法里面添加請求,可以在配置文件中配置,如果配置文件不配
置,放到IOC容器,他會在IOC容器里面拿到。
Fallback兜底返回
引入依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
編寫兜底實現
連接池
openFeign默認是不支持連接池的,這樣就會導致在高并發場景下,性能不是很好,頻繁創建連接
和銷毀連接,我們可以配置連接池來提供性能、優化資源利用。
openFeign底層發起http請求,依賴其他框架。其底層支持的http客戶端實現包括:
- HttpURLConnection:默認實現,不支持連接池
- Apache HttpClient:支持連接池
- OKHttp:支持連接池
openFeign整合OKHttp的步驟如下:
引入依賴
開啟連接池
制作OpenFeign Starter
制作openFegin Starter推送到maven私服倉庫,其他項目就可以引用調用feign客戶端。
編寫配置類
啟用對Feign客戶端支持。
自動裝配
編寫自動裝配配置,springboot2.X和springboot3.X都進行配置,確保能夠自動裝配進去。