Spring Cloud 系列之服務調用 OpenFeign的實現(xiàn)
1.1 簡介
1.1.1 概述
Feign 旨在使編寫 Java Http 客戶端變得更容易。在使用 Ribbon + RestTemplate 時,利用 RestTemplate 對 http 請求的封裝處理,形成了一套模版化的調用方法。但是在實際開發(fā)中,由于對服務依賴的調用可能不止一處,往往一個接口會被多處調用,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的調用。所以,F(xiàn)eign 在 Ribbon 基礎上做了進一步封裝,由他來幫助我們定義和實現(xiàn)依賴服務接口的定義。在 Feign 的實現(xiàn)下,我們只需創(chuàng)建一個接口并使用注解的方式來配置它,即可完成對服務提供方的接口綁定,簡化了使用 Spring cloud Ribbon 時,自動封裝服務調用客戶端的開發(fā)量。與 Ribbon 不同的是,通過 Feign 只需要定義服務綁定接口且以聲明式的方法,優(yōu)雅而簡單的實現(xiàn)了服務調用
Feign 已經(jīng)停止維護,OpenFeign 是 Spring Cloud 在 Feign 的基礎上進一步開發(fā)出來替代 Feign 的技術,支持了 SpringMVC 的注解,如 @RequesMapping 等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通過動態(tài)代理的方式產(chǎn)生實現(xiàn)類,實現(xiàn)類中做負載均衡并調用其他服務。
1.1.2 相關依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
1.2 簡單使用
1.2.1 基礎工程
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 調用服務
我們可以發(fā)現(xiàn) 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: # 建立連接所用時間,適用于網(wǎng)絡正常的情況下,兩端連接所用的時間 ConnectTimeout: 5000 # 建立連接后從服務器讀取到可用資源所用的時間 ReadTimeout: 5000
1.3.2 數(shù)據(jù)壓縮
feign: compression: request: # 開啟數(shù)據(jù)壓縮請求 enabled: true # 壓縮數(shù)據(jù)類型 mime-types: text/xml, application/xml, application/json # 數(shù)據(jù)壓縮下限 2048表示傳輸數(shù)據(jù)大于2048 才會進行數(shù)據(jù)壓縮(最小壓縮值標準) min-request-size: 2048 # 開啟數(shù)據(jù)壓縮響應 response: enabled: true
1.3.3 日志配置
☞ 日志級別
♞ NONE
:不開啟日志(默認)
♞ BASIC
:記錄請求方法、URL、響應狀態(tài)、執(zhí)行時間
♞ HEADERS
:在 BASIC 基礎上增加請求/響應頭
♞ FULL
:在 HEADERS 基礎上增加 body 和請求元數(shù)據(jù)
☞ 配置類
@Configuration public class LogConfig { @Bean Logger.Level loggerLevel(){ return Logger.Level.FULL; } }
☞ 配置文件
logging: level: # 以什么級別監(jiān)控那個接口 com.software.controller: debug
☞ 輸出
到此這篇關于Spring Cloud 系列之服務調用 OpenFeign的實現(xiàn)的文章就介紹到這了,更多相關Spring Cloud服務調用 OpenFeign內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- SpringCloud OpenFeign超詳細講解模板化遠程通信的實現(xiàn)
- Spring?Cloud?OpenFeign模版化客戶端搭建過程
- 分享Spring?Cloud?OpenFeign?的五個優(yōu)化技巧
- SpringCloud學習筆記之OpenFeign進行服務調用
- 解決啟用 Spring-Cloud-OpenFeign 配置可刷新項目無法啟動的問題
- 一篇文章教你如何在SpringCloud項目中使用OpenFeign
- 完美解決SpringCloud-OpenFeign使用okhttp替換不生效問題
- 詳解SpringCloud-OpenFeign組件的使用
- Springcloud基于OpenFeign實現(xiàn)服務調用代碼實例
- Spring Cloud詳解實現(xiàn)聲明式微服務調用OpenFeign方法
相關文章
使用IDEA創(chuàng)建servlet?JavaWeb?應用及使用Tomcat本地部署的實現(xiàn)
本文主要介紹了使用IDEA創(chuàng)建servlet?JavaWeb?應用及使用Tomcat本地部署2022-01-01SpringBoot整合Quartz實現(xiàn)動態(tài)配置的代碼示例
這篇文章將介紹如何把Quartz定時任務做成接口,實現(xiàn)以下功能的動態(tài)配置添加任務,修改任務,暫停任務,恢復任務,刪除任務,任務列表,任務詳情,文章通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-07-07java實現(xiàn)的計算器功能示例【基于swing組件】
這篇文章主要介紹了java實現(xiàn)的計算器功能,結合實例形式分析了java基于swing組件實現(xiàn)計算器功能相關運算操作技巧,需要的朋友可以參考下2017-12-12Spring中的@EnableScheduling定時任務注解
這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用 Spring 的定時任務功能,通過使用這個注解,可以在 Spring 應用程序中創(chuàng)建定時任務,需要的朋友可以參考下2024-01-01