微服務拆分-遠程調用

我們在查詢購物車列表的時候,它有一個需求,就是不僅僅要查出購物車當中的這些商品信息,同時還要去查到購物車當中這些商品的最新的價格和狀態信息,跟購物車當中的快照進行一個對比,從而去提醒用戶。

現在我們已經做了服務的拆分,購物車功能和商品服務功能分別拆分到了兩個獨立的微服務當中,也就是說代碼上面它們是隔離開的,不僅如此,每個微服務將來還會有自己獨立的數據庫,數據上也是隔離開的。一旦微服務進行了拆分,數據產生了隔離,服務之間也產生了隔離,這個時候沒有辦法像以前那樣去做本地調用了。如果要做數據查詢,查別人的數據,就必須通過網絡調用。

問題的關鍵是我們該怎么樣通過java代碼,從一個服務向另一個服務發起網絡請求查詢數據。

?@RequiredArgsConstructor 必備參數的構造函數,那么這樣一來這個注解的作用其實就是給加final的成員變量生成構造函數(常量必須初始化)。

new ParameterizedTypeReference<List<ItemDTO>>() {
},

字節碼泛型會擦除,但是new的對象它的泛型是還在的,這個時候就可以利用反射拿到這個對象上的這個泛型,從而就知道了我們想要的返回值類型。也就是泛型的引用利用這個對象把泛型傳過去。

CollUtil.join(itemIds,",")自動把這個id集合以逗號拼接變成字符串。

?

private void handleCartItems(List<CartVO> vos) {//TODO 1.獲取商品idSet<Long> itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());// 2.查詢商品
//        List<ItemDTO> items = itemService.queryItemByIds(itemIds);//2.1.利用RestTemplate發起http請求,得到http的響應ResponseEntity<List<ItemDTO>> response = restTemplate.exchange("http://localhost:8081/items?ids={ids}",HttpMethod.GET,null,new ParameterizedTypeReference<List<ItemDTO>>() {},Map.of("ids", CollUtil.join(itemIds,",")));//2.2解析響應if (!response.getStatusCode().is2xxSuccessful()){//查詢失敗,直接結束return;}List<ItemDTO> items = response.getBody();if (CollUtils.isEmpty(items)) {return;}// 3.轉為 id 到 item的mapMap<Long, ItemDTO> itemMap = items.stream().collect(Collectors.toMap(ItemDTO::getId, Function.identity()));// 4.寫入vofor (CartVO v : vos) {ItemDTO item = itemMap.get(v.getItemId());if (item == null) {continue;}v.setNewPrice(item.getPrice());v.setStatus(item.getStatus());v.setStock(item.getStock());}}

?

已經實現了從購物車服務到商品服務的遠程查詢。

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

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

相關文章

機動車授權簽字人考試的報名條件是什么?

機動車授權簽字人考試的報名條件通常如下&#xff1a; 學歷職稱與工作經驗要求 中級職稱及以上&#xff1a;應具備中級及以上專業技術職稱&#xff0c;且從事相關檢驗檢測工作三年及以上。如果承檢車型有專項作業車、大型客車、校車和危險貨物運輸車等&#xff0c;若不是相關專…

智慧工廠監測信息系統:構筑安全的數字化未來

在現代工業的浪潮中&#xff0c;智慧工廠已成為推動生產效率和產品質量提升的關鍵力量。為了確保這一先進生產模式的穩健運行&#xff0c;智慧工廠監測信息系統應運而生&#xff0c;并通過一系列安全措施&#xff0c;為企業的數字化轉型保駕護航。 安全注冊&#xff0c;筑牢第…

P2P中NAT穿越方案(UDP/TCP)(轉)

轉自&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09;_udp反向鏈接-CSDN博客 同&#xff1a;P2P中NAT穿越方案&#xff08;UDP/TCP&#xff09; - 知乎 (zhihu.com) 本文介紹了傳統基于udp的打洞方式&#xff0c;更進一步闡述了tcp打洞的原理&#xff0c;是對于…

算法 之 樹形dp 樹的中心、重心

文章目錄 重心實踐題目小紅的陡峭值 在樹的算法中&#xff0c;求解樹的中心和重心是一類十分重要的算法 求解樹的重心 樹的重心的定義&#xff1a;重心是樹中的一個節點&#xff0c;如果將這個點刪除后&#xff0c;剩余各個連通塊中點數的最大值最小&#xff0c;那么這個節點…

游戲引擎學習第146天

音高變化使得對齊讀取變得不可能&#xff0c;我們可以支持循環聲音了。 我們今天的目標是完成之前一段時間所做的音頻代碼。這個項目并不依賴任何引擎或庫&#xff0c;而是一個教育項目&#xff0c;目的是展示從頭到尾運行一個游戲所需要的全部代碼。無論你對什么方面感興趣&a…

深入理解MySQL主從原理

導讀 高鵬&#xff08;網名八怪&#xff09;&#xff0c;《深入理解MySQL主從原理》系列文的作者。 本系列通過GTID、Event、主庫、從庫、案例分析&#xff0c;五大塊來詳細講解主從原理。 這篇文章重在學習筆記整理&#xff01; 在學習《深入理解MySQL主從原理》一書時&…

前端數據模擬利器 Mock.js 深度解析

前端數據模擬利器 Mock.js 深度解析 一、Mock.js 核心價值 1.1 為何需要數據模擬 前后端并行開發加速接口文檔驅動開發異常場景模擬測試演示環境數據構造 1.2 Mock.js 核心能力 // 典型數據生成示例 Mock.mock(/api/user, {"users|5-10": [{"id|1": 1…

Phi-4-multimodal:圖、文、音頻統一的多模態大模型架構、訓練方法、數據細節

Phi-4-Multimodal 是一種參數高效的多模態模型&#xff0c;通過 LoRA 適配器和模式特定路由器實現文本、視覺和語音/音頻的無縫集成。訓練過程包括多階段優化&#xff0c;確保在不同模式和任務上的性能&#xff0c;數據來源多樣&#xff0c;覆蓋高質量網絡和合成數據。它的設計…

前后端數據加密傳輸【最佳方案】

AES和RSA區別 算法類型安全性密鑰長度/輸出長度速度應用場景AES對稱加密高128位、192位、256位快適用于大規模數據加密&#xff0c;入HTTPS協議的數據傳輸RSA非對稱加密高1024位、2048位、4096位較慢適用于數據安全傳輸、數字簽名和身份驗證 綜上&#xff1a;兼顧安全性和性能…

Unity--Cubism Live2D模型使用

了解LIVE2D在unity的使用--前提記錄 了解各個組件的作用 Live2D Manuals & Tutorials 這些文件都是重要的控制動畫參數的 Cubism Editor是編輯Live2D的工具&#xff0c;而導出的數據的類型&#xff0c;需要滿足以上的條件 SDK中包含的Cubism的Importer會自動生成一個Pref…

Linux | Vim 鼠標不能右鍵粘貼、跨系統復制粘貼

注&#xff1a;本文為 “ Vim 中鼠標右鍵粘貼、跨系統復制粘貼問題解決方案” 相關文章合輯。 未整理去重。 Linux 入門&#xff1a;vim 鼠標不能右鍵粘貼、跨系統復制粘貼 foryouslgme 發布時間 2016 - 09 - 28 10:24:16 Vim基礎 命令模式(command-mode)插入模式(insert-m…

Flink-DataStreamAPI-執行模式

一、概覽 DataStream API支持不同的運行時執行模式&#xff0c;我們可以根據用例的要求和作業的特征進行選擇。 STREAMING執行模式&#xff1a;被稱為“經典”執行模式為&#xff0c;主要用于需要持續增量處理并且預計無限期保持在線的無界作業BATCH執行模式&#xff1a;類似…

解決VScode 連接不上問題

問題 &#xff1a;VScode 連接不上 解決方案&#xff1a; 1、手動殺死VS Code服務器進程&#xff0c;然后重新嘗試登錄 打開xshell &#xff0c;遠程連接服務器 &#xff0c;查看vscode的進程 &#xff0c;然后全部殺掉 [cxqiZwz9fjj2ssnshikw14avaZ ~]$ ps ajx | grep vsc…

C#類型轉換基本概念

一、基本定義? C# 類型轉換是將數據從一種類型轉換為另一種類型的過程&#xff0c;分為 ?隱式轉換? 和 ?顯式轉換? 兩類?。 強類型語言特性?&#xff1a;C# 要求變量類型在編譯時確定&#xff0c;類型轉換需滿足兼容性或顯式規則?。目的?&#xff1a;處理不同數據類…

使用阿里云操作系統控制臺排查內存溢出

引言 操作系統控制臺是阿里云最新推出的一款智能運維工具&#xff0c;專為提升運維效率、優化服務器管理而設計。它集成了多種運維管理功能&#xff0c;包括操作系統助手、插件管理器以及其他實用工具&#xff0c;為用戶提供一站式的運維解決方案。無論是個人開發者還是企業運…

(C/S)架構、(B/S)架構

客戶機/服務器&#xff08;C/S&#xff09;架構 理論描述&#xff1a; 客戶機/服務器架構是一種網絡架構風格&#xff0c;其中任務被分配給網絡中的不同計算機&#xff0c;以提高效率和靈活性。這種架構由兩部分組成&#xff1a;客戶端&#xff08;Client&#xff09;和服務器&…

混合存儲HDD+SSD機型磁盤陣列,配上SSD緩存功能,性能提升300%

企業日常運行各種文件無處不在&#xff0c;文檔、報告、視頻、應用數據......面對成千上萬的文件&#xff0c;團隊之間需要做到無障礙協作&#xff0c;員工能夠即時快速訪問、共享處理文件。隨著業務增長&#xff0c;數字化辦公不僅需要大容量&#xff0c;快速高效的文件訪問越…

C 語言異常處理方式全面解析

引言? 在 C 語言編程領域&#xff0c;穩健的錯誤處理機制對于保障程序的可靠性、穩定性以及安全性至關重要。異常處理作為錯誤處理的進階形式&#xff0c;雖然并非 C 語言標準庫原生支持的特性&#xff0c;但通過巧妙運用語言特性和編程技巧&#xff0c;開發者能夠實現有效的…

【每日學點HarmonyOS Next知識】狀態欄控制、片段按鈕點擊回調、繪制組件、取消按鈕與輸入框對齊、父調子組件方法

1、HarmonyOS 狀態欄怎么控制顯示于隱藏&#xff0c;設置狀態欄顏色&#xff0c;子顏色等控制&#xff1f; 顯示與隱藏 可以設置沉浸式&#xff0c;隱藏的話可以退出沉靜式&#xff0c;在子窗口打開的頁面 aboutToAppear 方法中設置沉浸式 aboutToAppear(): void {// 設置沉浸…

二級Python通關秘籍:字符串操作符/函數/方法全解析與實戰演練

第一章 字符串基礎概念與運算符速通 1.1 字符串的不可變性特性 在Python中&#xff0c;字符串被設計為immutable類型&#xff0c;任何修改操作都會生成新對象。這一特性直接影響字符串拼接的性能表現&#xff0c;建議使用join()方法代替多次操作。 1.2 基礎操作符全掌握 pyt…