SpringCloud設定Feign底層實現

1. 概述

前端

版本:java

  spring-boot:  1.5.9.RELEASEgit

  spring-cloud: Dalston.SR5github

在默認狀況下 spring cloud feign在進行各個子服務之間的調用時,http組件使用的是jdk的HttpURLConnection,沒有使用線程池。 可經過爲feign配置http線程池優化調用效率。spring

2.OkHttp簡介緩存

OkHttp 是一個高效的 HTTP 客戶端,具備很是多的優點:網絡

  1. 可以高效的執行 http,數據加載速度更快,更省流量
  2. 支持 GZIP 壓縮,提高速度,節省流量
  3. 緩存響應數據,避免了重複的網絡請求
  4. 使用簡單,支持同步阻塞調用和帶回調的異步調用
  5. 當網絡出現問題的時候OkHttp依然堅守本身的職責,它會自動恢復通常的鏈接問題,若是你的服務有多個IP地址,當第一個IP請求失敗時,OkHttp會交替嘗試你配置的其餘IP,OkHttp使用現代TLS技術(SNI, ALPN)初始化新的鏈接,當握手失敗時會回退到TLS 1.0。

3. 配置方式:app

i) 引入jar包異步

    gradle方式: compile 'io.github.openfeign:feign-okhttp'maven

    maven方式:

<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>

ii) application.yml 
   feign.okhttp.enabled=true

iii) okhttp鏈接對象的初始化

建議在spring容器中以bean的形式生成,代碼以下:

 1 @Configuration
 2 @ConditionalOnClass(Feign.class)
 3 @AutoConfigureBefore(FeignAutoConfiguration.class)
 4 public class FeignOkHttpConfig{
 5 
 6    @Bean
 7    public okhttp3.OkHttpClient okHttpClient(){
 8       return new okhttp3.OkHttpClient.Builder()
 9                              .readTimeout(60,TimeUnit.SECONDS)
10                              .connectTimeout(60,TimeUnit.SECONDS)
11                              .connectionPool(new ConnectionPool())
12                              .build();
13    }
14 }

 

 

驗證部分:

  OkHttpClient.java  # execute方法添加斷點, 前端執行一個能夠發出feign調用的請求,看斷點是否落在execute方法中。

若是成功落入斷點部分,那麼恭喜你了!

若是沒有進入斷點部分,那麼你可要好好檢查一下代碼!

相關文章
相關標籤/搜索