谷粒商城學習筆記-22-分布式組件-SpringCloud-OpenFeign測試遠程調用

文章目錄

  • 一,OpenFeign的簡介
  • 二,OpenFeign的使用步驟
    • 1,場景說明
    • 2,引入依賴
    • 2,開啟OpenFeign
    • 3,編寫Feign接口
    • 4,使用feign調用遠程接口
    • 5,驗證
  • 錯誤記錄

上一節學習了注冊中心,我們知道服務器A調用服務器B之前,會從注冊中心獲取到服務B的IP,然后服務器A向服務B發出請求。

那么服務器A是怎么向服務B發出請求的呢?

這是本節要解決的主要問題。

在這個項目中,采用OpenFeign這個組件完成服務間的調用,OpenFeign是對Http請求的封裝。

一,OpenFeign的簡介

OpenFeign是一個聲明式的 HTTP 客戶端,它的目的就是讓遠程調用更加簡單。

Feign 提供了HTTP請求的模板,通過編寫簡單的接口和插入注解,就可以定義好 HTTP 請求的參數、格式、地址等信息。

Feign 整合了 Ribbon(負載均衡)和 Hystrix(服務熔斷),可以讓我們不再需要顯式地使用這兩個組件。

SpringCloudFeign 在 NetflixFeign 的基礎上擴展了對 SpringMVC 注解的支持,在其實現下,我們只需創建一個接口并用注解的方式來配置它,即可完成對服務提供方的接口綁定。簡化了SpringCloudRibbon 自行封裝服務調用客戶端的開發量。

二,OpenFeign的使用步驟

1,場景說明

我們以一個場景化的問題學習OpenFeign的使用,假設會員服務要調用優惠券服務的一個接口,這個接口返回了會員的能使用的優惠券信息。

這個優惠券的接口如下,這是一個用來測試的接口,沒有真實的業務邏輯。
在這里插入圖片描述

	@RequestMapping("member/list")public R list(){CouponEntity couponEntity = new CouponEntity();couponEntity.setCouponName("慢100減80");return R.ok().put("page", Arrays.asList(couponEntity));}

啟動服務后,可以使用下面的url在瀏覽器訪問這個接口。

http://localhost:7000/coupon/coupon/member/list

在這里插入圖片描述
瀏覽器調用這個接口,發出的是Http請求。

會員服務要使用這個接口,也要想優惠券服務發出Http請求,如果沒有OpenFeign,我們需要自己封裝Http請求,并解析Http響應,會非常復雜。

使用OpenFeign可以大大簡化這個過程。

2,引入依賴

考慮到所有模塊都需要這個依賴,所以把這個依賴聲明放在common模塊最為合適。

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

2,開啟OpenFeign

需要在啟動類加上類注解@EnableFeignClients,并通過basePackages屬性明確feign接口所在的包。

@EnableFeignClients(basePackages = "com.atguigu.gulimall.pms.feign")

@EnableFeignClients是激活OpenFeign的關鍵,在 Spring Boot 應用的啟動類加上這個注解,就相當于告訴 Spring:“嘿,我要開始使用 Feign 啦!請幫我找到所有用 @FeignClient 標記的接口,并為它們創建代理對象。”

這樣,Spring 就會掃描basePackages指定的包下的所有類,尋找那些用 @FeignClient 注解過的接口。對于每一個這樣的接口,Spring 都會創建一個代理類,這個代理類看起來就像你在調用本地方法一樣,但實際上它是在發起遠程調用。

總結一下,@EnableFeignClients 的作用就是:

  • 開啟 Feign 的功能;
  • 掃描并注冊所有用 @FeignClient 標記的接口;
  • 創建代理類,使得你能夠以聲明式的方式調用遠程服務,就像調用本地方法一樣簡單。

3,編寫Feign接口

首先在會員工程下新建一個包,名為feign,我們把所有Feign聲明相關的類都放在這個包下,便于管理。

如下圖所示。

  • ①所有的遠程調用相關的類都定義在feign包下
  • ②與優惠券相關的遠程調用接口的定義都可以放在這個類中,通過這個類調用優惠券服務的接口
  • ③使用注解@FeignClient指定這個類下的接口要調用是哪個服務,在FeignClient中指定服務名,需要根據服務名從注冊中心獲取IP
  • ④Feign相關的類是一個接口,不需要提供具體的實現
  • ⑤聲明遠程接口,注意通過url指定需要調用的接口

在這里插入圖片描述

@FeignClient("gulimall-coupon")
public interface CouponFeign {@RequestMapping("/coupon/coupon/member/list")public R list();
}

4,使用feign調用遠程接口

一般情況下,我們會在Service中調用Feign接口,但理論上,我們可以在任何地方調用Feign接口。

接下來,為了演示的方便,我們在Member會員服務的Controller接口中調用Feign接口。

如下,我們在MemberController中編寫演示代碼。

@Autowiredprivate CouponFeign couponFeign;@RequestMapping("/coupons")public R coupons(){return couponFeign.list();}

在這里插入圖片描述

  • ① 注入CouponFeign對象
  • ② 調用CouponFeign的list方法,就像調用本地接口一樣,OpenFeign底層會將這個調用封裝為Http請求,并接收、封裝響應

通過這個例子,我們可以體驗到使用OpenFeign進行遠程調用是非常簡單的,語法和調用本地接口一樣。

5,驗證

啟動會員服務,在瀏覽器輸入:

http://localhost:8000/member/member/coupons

在這里插入圖片描述
我們調用的是會員服務的接口,但是會員服務通過OpenFeign實現對優惠券服務的遠程調用。

錯誤記錄

錯誤記錄-SpringCloud-OpenFeign測試遠程調用

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

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

相關文章

鼠標錄制工具|鍵鼠軌跡錄制,實現自動辦公

利用鍵鼠錄制工具錄制固定的鼠標點擊、鍵盤輸入等操作&#xff0c;實現自動化執行固定操作&#xff0c;節省時間。鼠標錄制功能可以錄制多步驟的操作&#xff0c;將錄制的動作保存并命名&#xff0c;甚至可以編輯操作速度。下面將演示幾種生活中常見的案例&#xff0c;詳細講解…

企業微信hook接口協議,移除群成員通知

移除群成員通知 返回示例 {"flag": 0, "receiver": 0, "sender_name": "", "is_room": 1, "server_id": 15318083, "send_time": 1687688952, "sender": 1688855749266556, "referid&…

k8s中使用cert-manager生成自簽名證書

一、安裝 cert-manager 注意查看cert-manager和K8S支持的對應版本 我的 k8sv1.28.2&#xff0c;cert-manager v1.12.11 下載 cert-manager.yaml 文件&#xff0c;執行 kubectl apply -f cert-manager.yaml二、生成自簽名證書 cert-selfsigned.yaml apiVersion: cert-manage…

【SpringBoot】隨機鹽值+雙重SHA256加密實戰

目錄&#xff1a; 1.SHA-256和隨機鹽值 2.前端實現 3.后端實現 1.SHA-256和Salt 1.1.什么是SHA-256 SHA-256是一種信息摘要算法&#xff0c;也是一種密碼散列函數。對于任意長度的消息&#xff0c;SHA256都會產生一個256bit長的散列值&#xff08;哈希值&#xff09;&…

插件更新了!

最近花了點時間&#xff0c;給網頁插件添加了新功能&#xff0c;下面簡單給大家介紹一下如何使用 我們安裝好插件后&#xff0c;進入網頁就可以看到一個帶logo的按鈕了&#xff0c;我們可以點一下就可以跳出快捷操作 不同頁面點擊會出現不同的功能&#xff0c;大家可以根據自己…

dy商品評論采集

摘要 本文將詳細介紹如何通過抖音商品評論采集來獲取精準的用戶反饋&#xff0c;從而優化產品和營銷策略。通過這個指南&#xff0c;您將學會如何設置評論采集系統&#xff0c;分析用戶評論數據&#xff0c;以及如何利用這些數據來吸引更多粉絲&#xff0c;增加商品銷量。 返…

跨境傳輸需要遵守哪些準則,如何做到有效管控?

在全球化的商業環境中&#xff0c;跨國企業面臨著數據跨境傳輸的挑戰。隨著業務的擴展&#xff0c;企業需要在不同國家和地區之間高效、安全地傳輸大量數據。選擇合適的跨境傳輸方案對于保障數據安全、提高業務效率、遵守法律法規至關重要。 跨境傳輸數據需要遵守的準則和規定主…

Nginx:關于實現跨域代理

運維專題 Nginx&#xff1a;關于實現跨域代理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.ne…

數據賦能(142)——開發:數據合并——技術方法、主要工具

技術方法 數據合并的技術方法主要包括以下幾種&#xff1a; 軸向連接&#xff08;Concatenation&#xff09;&#xff1a; 使用pd.concat()函數&#xff0c;沿一個軸&#xff08;通常是行或列&#xff09;將多個DataFrame對象連接在一起&#xff0c;形成一個新的DataFrame對…

html自學筆記與面試會問到問題

第一章 1.1什么是JavaScript&#xff1f; 一各跨平臺的腳本語言1.2ECMA特點&#xff1a; 由三大部分組成&#xff1a;核心語法(關鍵字、核心對象、語法)、DOM、BOM1.3 取余運算&#xff08;又叫取模運算&#xff09;&#xff1a; 取余&#xff1a;整除后&#xff0c;除不盡的…

發那科機床聯網串口配置

本文章僅針對無網口&#xff0c;需要通過串口輸出采集數據情況。跟這篇文章互為參考&#xff0c;一個理論&#xff0c;一個實戰。 Fanuc DPRNT宏程序串口采集-CSDN博客 一、禁用機器串口監控 選擇System、monit 二、設置參數可寫 在MDI模式中字符面板上按OFS/SET鍵,連按致屏…

終于搞定了通過兩路藍牙接收數據

一直想做無線傳感器&#xff0c;通過藍牙來接收數據&#xff0c;無奈因為arduino接收串口數據的一些問題&#xff0c;一直擱到現在。因為學校里給學生開了選修課&#xff0c;所以手邊有一些nano和mega可以使用&#xff0c;所以就做了用兩個nano加上兩個藍牙模塊來發射數據&…

經常用借唄和花唄對征信有影響嗎?

說起支付寶里的花唄和借唄&#xff0c;大伙兒肯定都不陌生&#xff0c;它們倆就像是支付寶里的信用貸款雙胞胎&#xff0c;名字相近&#xff0c;性格卻大相徑庭。現在&#xff0c;這倆兄弟都乖乖地接入了央行的征信大家庭&#xff0c;你的每一次使用&#xff0c;都會被記錄得清…

GEE代碼實例教程詳解:湖泊水位變化監測

簡介 本篇博客將介紹如何使用Google Earth Engine (GEE) 對湖泊水位變化進行監測。通過MODIS數據集&#xff0c;我們可以識別2001年和2023年的湖泊范圍&#xff0c;并計算湖泊的高程變化。 背景知識 MODIS數據集 MODIS/061/MOD09Q1數據集提供了MODIS的地表反射數據&#xf…

DDD架構

1.DDD架構的概念&#xff1a; 領域驅動設計&#xff08;Domain-Driven Design, DDD&#xff09;是一種軟件設計方法&#xff0c;旨在將軟件系統的設計和開發焦點集中在領域模型上&#xff0c;以解決復雜業務問題 2.DDD架構解決了什么問題: 在以前的mvc架構種&#xff0c;三層結…

產品經理-交互設計動手實踐(11)

業內有很多畫交互的工具&#xff0c;這里不過多介紹&#xff0c;互聯網公司最常用的工具是Axure,墨刀,藍湖,小瀑 它是一個專業的快速原型設計工具&#xff0c;使用它能夠快速創建線框圖、流程圖、原型和規格說明文檔。 它能快速、高效地創建原型&#xff0c;同時支持多人協作設…

華為HCIP Datacom H12-821 卷30

1.單選題 以下關于OSPF協議報文說法錯誤的是? A、OSPF報文采用UDP報文封裝并且端口號是89 B、OSPF所有報文的頭部格式相同 C、OSPF協議使用五種報文完成路由信息的傳遞 D、OSPF所有報文頭部都攜帶了Router-ID字段 正確答案&#xff1a;A 解析&#xff1a; OSPF用IP報…

iOS 開發中不常見的專業術語

樂此不疲地把簡單的問題復雜化&#xff0c;并把這種XX行為叫作專業 APM 在 iOS 開發中&#xff0c;APM 代表 Application Performance Management&#xff08;應用性能管理&#xff09;。APM 是一套監控和管理應用程序性能的工具和技術&#xff0c;旨在確保應用程序運行平穩、…

【人工智能】-- 法律與倫理

個人主頁&#xff1a;歡迎來到 Papicatch的博客 課設專欄 &#xff1a;學生成績管理系統 專業知識專欄&#xff1a; 專業知識 文章目錄 &#x1f349;引言 &#x1f349;倫理問題 &#x1f348;隱私泄露問題 &#x1f34d;人工智能與隱私泄露的緊密關聯 &#x1f34d;數…

上海慕尼黑電子展開展,啟明智顯攜物聯網前沿方案亮相

隨著科技創新的浪潮不斷涌來&#xff0c;上海慕尼黑電子展在萬眾矚目中盛大開幕。本次展會匯聚了全球頂尖的電子產品與技術解決方案&#xff0c;成為業界矚目的焦點。啟明智顯作為物聯網彩屏顯示領域的佼佼者攜產品亮相展會&#xff0c;為參展者帶來了RTOS、LINUX全系列方案及A…