七天學會SpringCloud分布式微服務——05——OpenFeign

1、OpenFeign實現遠程調用

在這里插入圖片描述

1.1 services.pom引入依賴

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

1.2 在service-order微服務中新建feign.ProductFeignClient.java

在這里插入圖片描述

package com.zhenbang.feign;import com.zhenbang.product.bean.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient("service-product")   // feign客戶端
public interface ProductFeignClient {// MVC注解的兩套使用邏輯// 1、標注在Controller ,是接受這樣的請求// 2、標注在FeignClient,是發送這樣的請求@GetMapping("/product/{id}")Product getProductById(@PathVariable("id") Long id);}
  • 這里需要說明@FeignClient注解的Value值是要調用的微服務名字
  • @GetMapping請求,要調用的product-service微服務的controller函數,此處在controller中復制

1.3 注入以及調用

@Resource
ProductFeignClient productFeignClient;
 Product productFromRemote = productFeignClient.getProductById(productId);

2、OpenFeign調用詳細日志實現

在這里插入圖片描述

3、OpenFeign超時控制

在這里插入圖片描述
在這里插入圖片描述

  • 連接超時和讀取超時
  • 默認時間分別是 10s 和 60s
  • 超時配置
    在這里插入圖片描述

4、OpenFeign重試機制

在這里插入圖片描述

  • 默認沒有重試
  • 可以設置重試(100ms,1s,5)
    最大重復次數5次、如果相隔時間超過1s,不再重試,第2次是100ms,第三次是100ms*1.5

增加一個重試配置類

**加粗樣式**

package com.zhenbang.config;import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RetryerConfig {@BeanRetryer retryer(){return new Retryer.Default();// 這個放那三個參數}
}

5、OepenFeign配置攔截器

在這里插入圖片描述
以請求攔截器為例

5.1 請求攔截器java文件

在這里插入圖片描述
java文件

package com.zhenbang.interceptor;import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;import java.util.UUID;
/*攔截器使用的第二種方式*/
@Component
public class TokenRequestInterceptor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {System.out.println("攔截器啟動");/*為這次請求頭種添加token信息*/// 主要是requestTemplate.header("X-Token", UUID.randomUUID().toString());}
}

5.2 攔截器配置使用

方法一:在yml文件中
在這里插入圖片描述
方法二:攔截器加Component組件
在這里插入圖片描述
這里使用第2種方式

6、OpenFeign兜底返回Fallback

在這里插入圖片描述

6.1 編寫回調函數

在這里插入圖片描述

6.2 ProductFeignClientFallback.java

package com.zhenbang.feign.fallback;
import java.math.BigDecimal;import com.zhenbang.feign.ProductFeignClient;
import com.zhenbang.product.bean.Product;
@Component
public class ProductFeignClientFallback implements ProductFeignClient {@Overridepublic Product getProductById(Long id) {System.out.println("回調兜底");Product product = new Product();product.setId(id);product.setPrice(new BigDecimal("0"));product.setProductName("");product.setNum(0);return product; // 如果調用失敗,就走回調這個邏輯,返回空值}
}

6.3 service.pom引入Sentinel依賴

     <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

6.4 yml開啟Sentinel功能

在這里插入圖片描述

  • feign用Sentinel開啟熔斷功能

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

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

相關文章

大語言模型的通用局限性與全球技術演進

基于行業最新數據修訂&#xff08;2025Q2&#xff09; 一、知識截止期&#xff1a;全球模型的進化差異 所有LLM都存在??知識截止期&#xff08;Knowledge Cut-off&#xff09;??&#xff0c;即模型訓練數據的時間上限。這在技術迭代飛快的軟件開發領域尤為致命——2023年后…

常見網絡安全威脅和防御措施

網絡安全威脅是一種技術風險&#xff0c;會削弱企業網絡的防御能力&#xff0c;危及專有數據、關鍵應用程序和整個 IT 基礎設施。由于企業面臨廣泛的威脅&#xff0c;因此他們應該仔細監控和緩解最關鍵的威脅和漏洞。網絡安全問題有七大類&#xff0c;它們都包括多種威脅&#…

人工智能和云計算對金融未來的影響

你有沒有想過&#xff0c;你的錢是否會由人工智能而不是銀行來管理&#xff1f;如果你的銀行不存在于真實的地方&#xff0c;而是存在于幾千公里之外的某臺大型超級計算機上&#xff0c;那會怎樣&#xff1f;這可能有一天會發生&#xff0c;讓我們看看它是如何發生的&#xff0…

Vue3——項目配置eslint+prettier

一、安裝依賴 pnpm add -D eslint prettier eslint-plugin-vue vue-eslint-parser typescript-eslint/eslint-plugin typescript-eslint/parser eslint-config-prettier eslint-plugin-prettier typescript-eslint二、創建或修改 eslint.config.cjs // eslint.config.cjs con…

人工智能編程三大核心流程詳解--機器學習、神經網絡、NLP自然語言處理

對于學習人工智能階段&#xff0c;代碼可以寫出來&#xff0c;主要是按照構建流程一步一步&#xff0c;所以本篇博客主要是通過三個大點來介紹&#xff1a;第一個點是機器學習中預測損失值與真實值之間的誤差流程&#xff1b;第二點是深度學習中神經網絡搭建流程&#xff1b;第…

《AI for Science:深度學習如何重構基礎科學的發現范式?》

前言 前些天發現了一個巨牛的人工智能免費學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 AI for Science&#xff1a;深度學習如何重構基礎科學的發現范式&#xff1f; 副標題&#xff1a;從費曼圖到神經微分方程&…

創客匠人:創始人 IP 打造引領知識變現新路徑?

在當下知識經濟蓬勃發展的時代&#xff0c;知識變現已成為眾多創作者和從業者關注的焦點。創客匠人作為行業內的重要參與者&#xff0c;為創始人 IP 打造與知識變現提供了獨特且有效的思路。? 創始人 IP 打造在知識變現中占據著關鍵地位。創客匠人認為&#xff0c;一個成功的…

JVM調優實戰 Day 7:JVM線程分析與死鎖排查

【JVM調優實戰 Day 7】JVM線程分析與死鎖排查 文章標簽 jvm調優, 線程分析, 死鎖排查, JVM監控, Java性能優化, JVM參數配置 文章簡述 在Java應用的高并發場景中&#xff0c;線程管理與死鎖問題往往是性能瓶頸的根源。本文作為“JVM調優實戰”系列的第7天&#xff0c;深入解析…

Kotlin中協程掛起函數的本質

一、核心概念&#xff1a;掛起函數的本質 1. 核心定義 掛起函數&#xff08;Suspending Function&#xff09;是 Kotlin 協程的核心機制&#xff0c;它允許函數在執行過程中暫停&#xff08;掛起&#xff09;而不阻塞線程&#xff0c;并在條件滿足時恢復執行。 2. 與普通函數…

人工智能中的集成學習:從原理到實戰

大家好&#xff01;今天我們來聊聊人工智能領域中一個非常強大的技術——集成學習&#xff08;Ensemble Learning&#xff09;&#x1f60e;。——這個讓模型預測能力飆升的“團隊合作”神器&#xff01;無論你是剛入門的新手還是想復習的老司機&#xff0c;這篇通俗教程都能幫…

大事件項目記錄13-登錄優化-redis

一、redis優化登錄接口。 原有代碼中在修改密碼在產生新令牌后并未將舊的令牌主動失效&#xff0c;舊的令牌依然可以使用 &#xff0c;會產生安全隱患&#xff0c;所以需要對其進行優化。 1.令牌主動失效機制。 &#xff08;1&#xff09;登錄成功后&#xff0c;給瀏覽器響應令…

重塑音視頻敘事:Premiere文本剪輯與Podcast AI降噪的革命性工作流

一、 開篇的另一些心里話 最近淘到個好東西&#xff0c;是來自奧地利Blueskyy藝術學院的Adobe教育版授權&#xff0c;深度體驗下來&#xff0c;感覺就像是給我的創意工具箱做了一次“滿配”升級&#xff0c;有些心得不吐不快&#xff0c;必須跟同路的設計師朋友們碰一碰。 在分…

面向隱私保護的機器學習:聯邦學習技術解析與應用

在當今數字化時代&#xff0c;數據隱私和安全問題日益受到關注。隨著《數據安全法》《個人信息保護法》等法律法規的實施&#xff0c;企業和機構在數據處理和分析過程中面臨著越來越嚴格的合規要求。然而&#xff0c;機器學習模型的訓練和優化往往需要大量的數據支持&#xff0…

【軟考高項論文】論信息系統項目的質量管理

摘要 在信息系統項目管理里&#xff0c;質量管理是保障項目成果契合預期、滿足用戶需求與業務目標的關鍵。本文以 2024 年 6 月啟動的一個典型信息系統項目為例&#xff0c;闡述了信息系統項目質量管理的過程&#xff0c;包括質量規劃、質量控制和質量保證三個核心活動及其目的…

基于DSP的邊緣檢測與圖像銳化算法研究與實現

摘要&#xff1a;該文圍繞基于 DSP 的邊緣檢測與圖像銳化算法展開研究與實現。在邊緣檢測方面&#xff0c;實現了 Sobel、Roberts 和 Prewitt 三種算子算法。Sobel 算子通過計算水平和垂直方向的梯度并求和來檢測邊緣&#xff0c;對噪聲有一定抑制能力&#xff1b;Roberts 算子…

概率概率密度

我之前一直很糾結為什么離散型隨機變量分布律中有隨機變量的出現&#xff0c;而連續型隨機變量概率密度中沒有隨機變量的出現。那對于連續型隨機變量而言&#xff0c;如何建立隨機變量和取值之間的聯系。也就是說看到連續型隨機變量的概率密度&#xff0c;我怎么知道描述的是哪…

Android 中 使用 ProgressBar 實現進度顯示

在 Android 中,ProgressBar 是一個用于顯示進度的控件,通常用于表示任務的完成進度或加載狀態。ProgressBar 有多種樣式,包括水平進度條、圓形進度條等。 1、常見屬性 android:id 用于在代碼中引用該ProgressBar。android:layout_width 和 android:layout_height 定義Progr…

Prompt:面向目標的提示詞

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄 1 引言2 理解”目標驅動“提示詞2.1 從”引導“到…

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群(一主一從)

04_MySQL 通過 Docker 在同一個服務器上搭建主從集群&#xff08;一主一從&#xff09; &#x1f9f0; 準備工作 1. 拉取 MySQL 鏡像 docker pull mysql:8.0.262. 創建主從配置目錄 mkdir -p /root/mysql/master/conf mkdir -p /root/mysql/master/data mkdir -p /root/mysq…

隨筆 | 寫在六月的最后一天,也寫在2025年上半年的最后一天

文章目錄 前言.出差.耐心.回歸.結語. 前言 又要以最經典的句式開場&#xff0c;轉眼間&#xff0c;2025年已經過去了一半。五六月飛逝&#xff0c;但仔細回望&#xff0c;也留下了很多美好的瞬間。 記得之前讀過一句話&#xff0c;人們總是高估一年可以做的事情&#xff0c;也…