OpenFeign終極指南:超時控制、重試策略、攔截器與自定義Starter

目錄

前言

使用

引入依賴

開啟feign

編寫feign客戶端

效果

日志

超時配置

重試機制

攔截器

Fallback兜底返回

引入依賴

編寫兜底實現

連接池

引入依賴

開啟連接池

制作OpenFeign Starter

編寫配置類

自動裝配


前言

在RPC框架中,有openFeignDubbo,openFeign是SpringCloud的,而Dubbo是

SpringCloudalibaba的,我們講解openFeign,博主所在公司用的RPC框架也是openFeign,

幾個系統之間相互進行PRC調用,通過制作openFeign starter推送到遠程倉庫,然后通過maven引

用使用feign客戶端進行調用。

SpiringCloud openFeign官網:openFeign

使用

引入依賴

引入spring-cloud-starter-openfeignspring-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都進行配置,確保能夠自動裝配進去。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77387.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows桌面圖標變白的解決方案

一、問題原因 桌面圖標變白通常是由于系統圖標緩存文件&#xff08;IconCache.db&#xff09;損壞或系統圖表示現異常導致。圖標緩存是Windows用于存儲應用程序和文件夾圖標圖像的臨時文件&#xff0c;當該文件損壞或系統未正確更新緩存時&#xff0c;圖標會因無法加載原始圖像…

【mysql】Mac 通過 brew 安裝 mysql 、啟動以及密碼設置

Mac 通過 brew 安裝 mysql 、啟動以及密碼設置 使用 brew 安裝 mysqlmysql 啟動mysql密碼設置參考文章&#xff1a; 使用 brew 安裝 mysql brew install mysqlmysql 啟動 下載完畢&#xff0c;終端告訴我們mysql數據庫沒有設置密碼的&#xff0c;我們可以直接執行 mysql -u r…

Manus AI:突破多語言手寫識別技術壁壘之路

Manus AI與多語言手寫識別 討論Manus AI如何突破多語言手寫識別的技術壁壘。 寫一篇詳細的博客有重點有鏈接超詳細 Manus AI&#xff1a;突破多語言手寫識別技術壁壘之路 在人工智能領域&#xff0c;多語言手寫識別一直是極具挑戰性的難題。不同語言的字符形態、書寫規則大相…

Redis字符串類型實戰:解鎖五大高頻應用場景

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 Redis的字符串&#xff08;String&#xff09;類型是最基礎的數據結構&#xff0c;但其靈活性和原子性操作使其成為解決高并發場景問題的利器。本文通過真實項…

邊沿耦合與寬邊耦合的串擾

邊沿耦合與寬邊耦合的串擾 我們知道&#xff0c;如果兩條走線位于同一層&#xff0c;由于耦合兩條線之間會存在串擾。如果PCB層疊中有相鄰的信號層&#xff0c;那么同樣存在耦合&#xff0c;這兩個相鄰信號層的走線之間也會存在串擾。同層走線之間的耦合稱為邊沿耦合&#xff0…

B端可視化像企業數據的透視鏡,看清關鍵信息

在數字化時代&#xff0c;數據已成為企業最寶貴的資產之一。然而&#xff0c;數據的價值不僅取決于其數量&#xff0c;更在于企業能否快速、準確地提取關鍵信息并據此做出決策。B端可視化技術的出現&#xff0c;為企業提供了一種強大的工具&#xff0c;它如同企業的“透視鏡”&…

蒼穹外賣項目中所涉及到的測試內容

1.使用JWT令牌封裝用戶令牌&#xff0c;并且設置相應的攔截器校驗JWT的有效性&#xff0c;從而確保了項目的安全可靠 1.基本功能測試&#xff1a; 驗證合法JWT是否能夠正常通過攔截器的校驗 驗證非法的JWT能否正常通過攔截器的校驗 2.可靠性測試&#xff1a; 3.易用性測試 …

模擬投資大師思維:AI對沖基金開源項目詳解

這里寫目錄標題 引言項目概述核心功能詳解多樣化的AI投資智能體靈活的運行模式透明的決策過程 安裝和使用教程環境要求安裝步驟基本使用方法運行對沖基金模式運行回測模式 應用場景和實際價值教育和研究價值潛在的商業應用與現有解決方案的對比局限性與發展方向 結論 引言 隨著…

YOLO拓展-錨框(anchor box)詳解

一.錨框&#xff08;anchor box&#xff09;概述 1.1什么是錨框 錨框就是一種進行預測的像素框&#xff0c;通過遍歷輸入圖像上所有可能的像素框&#xff0c;然后選出正確的目標框&#xff0c;并對位置和大小進行調整就可以完成目標檢測任務。 對于yolo錨框的建設須基于實際…

Excel自定義函數取拼音首字母

1.啟動Excel 2003&#xff08;其它版本請仿照操作&#xff09;&#xff0c;打開相應的工作表&#xff1b; 2.執行“工具 > 宏 > Visual Basic編輯器”命令&#xff08;或者直接按“AltF11”組合鍵&#xff09;&#xff0c;進入Visual Basic編輯狀態&#xff1b; 3.執行“…

Cril 截取字段-生成hostname

有些event 是不規則,需要用regular express 來加工一下, 下面說一下sample 數據: 2021-10-26 17:00:12 PDT sample log data from host eagle1 2021-10-26 17:00:12 PDT sample log data from host eagle2 2021-10-26 17:00:12 PDT sample log data from host eagle3 2021…

關于大型語言模型的“生物學”

我知道我們已經聊過很多次&#xff0c;關于LLM是怎么運作的&#xff0c;它們的影響力&#xff0c;還有它們的使用場景。但盡管現在有那么多講LLM的文章&#xff0c;它們本質上還是個黑箱。 但我們真正要問自己的問題是&#xff0c;為什么理解這些系統的內部結構很重要&#xf…

壓濾機與錫泥產生效率

的關系可從設備作用機制、工藝參數影響及效率評估方法三個維度展開&#xff0c;結合工業實踐與實驗室研究&#xff0c;其關聯邏輯如下&#xff1a; 一、壓濾機在錫泥處理中的核心作用 固液分離原理 壓濾機通過正壓強壓脫水、擠壓脫水、風吹脫水三步實現固液分離&#xff1a; …

簡單線段樹的講解(一點點的心得體會)

目錄 一、初識線段樹 圖例&#xff1a; ?編輯 數組存儲&#xff1a; 指針存儲&#xff1a; 理由&#xff1a; build函數建樹 二、線段樹的區間修改維護 區間修改維護&#xff1a; 區間修改的操作&#xff1a; 遞歸更新過程&#xff1a; 區間修改update&#xff1a…

Jenkins 2.492.2 LTS 重置管理員密碼

文章目錄 1. Jenkins 關閉用戶認證2. jenkins 修改密碼 如果忘記了 Jenkins 的管理員密碼的話&#xff0c;也不用擔心&#xff0c;只要你有權限訪問 Jenkins 的根目錄&#xff0c;就可以輕松地重置密碼。 1. Jenkins 關閉用戶認證 // 查看 jenkins 家目錄&#xff08;使用 doc…

《AI大模型應知應會100篇》第26篇:Chain-of-Thought:引導大模型進行步驟推理

第26篇&#xff1a;Chain-of-Thought&#xff1a;引導大模型進行步驟推理 摘要 在自然語言處理&#xff08;NLP&#xff09;和人工智能領域&#xff0c;如何讓大模型像人類一樣進行逐步推理是一個核心挑戰。Chain-of-Thought (思維鏈) 技術的出現為這一問題提供了強有力的解決…

SICAR 標準 安全門鎖操作箱 按鈕和指示燈說明

1、安全門鎖操作箱 2、按鈕和指示燈說明 一、指示燈說明 紅燈&#xff1a; 常亮&#xff1a;表示安全門已解鎖&#xff1b;閃爍&#xff1a;表示安全門未復位&#xff1b;熄滅&#xff1a;表示安全門已復位。 黃燈&#xff1a; 常亮&#xff1a;表示處于維修模式。 綠燈&…

MAC-??需求??:10萬訂單異步執行庫存扣減、短信通知。

批量任務并行處理?? 實現,通過拆分任務、異步執行和線程池管理提升處理。 ??10萬訂單異步處理方案設計?? 基于圖中代碼的批量處理框架,結合訂單業務需求,以下是 ??庫存扣減與短信通知的異步實現??: ??1. 代碼實現(基于原有框架改造)?? @Service public…

python 庫 下載 ,整合在一個小程序 UIUIUI

上圖 import os import time import threading import requests import subprocess import importlib import tkinter as tk from tkinter import ttk, messagebox, scrolledtext from concurrent.futures import ThreadPoolExecutor, as_completed from urllib.parse import…

Flutter與FastAPI的OSS系統實現

作者&#xff1a;孫嘉成 目錄 一、對象存儲 二、FastAPI與對象存儲 2.1 繽紛云S4服務API對接與鑒權實現 2.2 RESTful接口設計與異步路由優化 三、Flutter界面與數據交互開發 3.1 應用的創建 3.2頁面的搭建 3.3 文件的上傳 關鍵詞&#xff1a;對象存儲、FastAPI、Flutte…