1. 程式人生 > 程式設計 >Spring Cloud 系列之服務呼叫 OpenFeign的實現

Spring Cloud 系列之服務呼叫 OpenFeign的實現

1.1 簡介

1.1.1 概述

  Feign 旨在使編寫 Java Http 客戶端變得更容易。在使用 Ribbon + RestTemplate 時,利用 RestTemplate 對 http 請求的封裝處理,形成了一套模版化的呼叫方法。但是在實際開發中,由於對服務依賴的呼叫可能不止一處,往往一個介面會被多處呼叫,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的呼叫。所以,Feign 在 Ribbon 基礎上做了進一步封裝,由他來幫助我們定義和實現依賴服務介面的定義。在 Feign 的實現下,我們只需建立一個介面並使用註解的方式來配置它,即可完成對服務提供方的介面繫結,簡化了使用 Spring cloud Ribbon 時,自動封裝服務呼叫客戶端的開發量。與 Ribbon 不同的是,通過 Feign 只需要定義服務繫結介面且以宣告式的方法,優雅而簡單的實現了服務呼叫

  Feign 已經停止維護,OpenFeign 是 Spring Cloud 在 Feign 的基礎上進一步開發出來替代 Feign 的技術,支援了 SpringMVC 的註解,如 @RequesMapping 等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 註解下的介面,並通過動態代理的方式產生實現類,實現類中做負載均衡並呼叫其他服務。

1.1.2 相關依賴

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

1.2 簡單使用

1.2.1 基礎工程

☞ eureka 專案

1.2.2 Feign 客戶端

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/11/5
 * @description Feign 介面
 */
@Component
@FeignClient("ProviderServer")	// 服務提者名稱
public interface ProviderFeign {

 @GetMapping("/provider/get")	// 服務地址
 public String get();
}

1.2.3 啟動類

@SpringBootApplication
@EnableFeignClients
public class ConsumerApplication {
 public static void main(String[] args) {
 SpringApplication.run(ConsumerApplication.class,args);
 }
}

1.2.4 呼叫服務

  我們可以發現 Feign 自帶負載均衡配置,而 OpenFeign 預設支援 Ribbon,我們可以通過 Ribbon 的配置來修改負載均衡策略。Ribbon 詳情參考 ☞Spring Cloud 系列之負載均衡 Ribbon

在這裡插入圖片描述

1.3 其他配置

1.3.1 超時控制

# 設定 feign 客戶端超時時間,預設 1s
feign:
 client:
 config:
 default:
 connectTimeout: 5000
 readTimeout: 5000


# OpenFeign 預設支援 Ribbon,也可以使用以下配置
ribbon:
 # 建立連線所用時間,適用於網路正常的情況下,兩端連線所用的時間
 ConnectTimeout: 5000
 # 建立連線後從伺服器讀取到可用資源所用的時間
 ReadTimeout: 5000

1.3.2 資料壓縮

feign:
 compression:
 request:
 # 開啟資料壓縮請求
 enabled: true
 # 壓縮資料型別
 mime-types: text/xml,application/xml,application/json
 # 資料壓縮下限 2048表示傳輸資料大於2048 才會進行資料壓縮(最小壓縮值標準)
 min-request-size: 2048
 # 開啟資料壓縮響應
 response:
 enabled: true

1.3.3 日誌配置

☞ 日誌級別

 ♞ NONE:不開啟日誌(預設)
 ♞ BASIC:記錄請求方法、URL、響應狀態、執行時間
 ♞ HEADERS:在 BASIC 基礎上增加請求/響應頭
 ♞ FULL:在 HEADERS 基礎上增加 body 和請求元資料

☞ 配置類

@Configuration
public class LogConfig {
 @Bean
 Logger.Level loggerLevel(){
 return Logger.Level.FULL;
 }
}

☞ 配置檔案

logging:
 level:
 # 以什麼級別監控那個介面
 com.software.controller: debug

☞ 輸出

在這裡插入圖片描述


☞ 原始碼

到此這篇關於Spring Cloud 系列之服務呼叫 OpenFeign的實現的文章就介紹到這了,更多相關Spring Cloud服務呼叫 OpenFeign內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!