微服务拆分-远程调用
我们在查询购物车列表的时候,它有一个需求,就是不仅仅要查出购物车当中的这些商品信息,同时还要去查到购物车当中这些商品的最新的价格和状态信息,跟购物车当中的快照进行一个对比,从而去提醒用户。

现在我们已经做了服务的拆分,购物车功能和商品服务功能分别拆分到了两个独立的微服务当中,也就是说代码上面它们是隔离开的,不仅如此,每个微服务将来还会有自己独立的数据库,数据上也是隔离开的。一旦微服务进行了拆分,数据产生了隔离,服务之间也产生了隔离,这个时候没有办法像以前那样去做本地调用了。如果要做数据查询,查别人的数据,就必须通过网络调用。

问题的关键是我们该怎么样通过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());}}



已经实现了从购物车服务到商品服务的远程查询。
相关文章:
微服务拆分-远程调用
我们在查询购物车列表的时候,它有一个需求,就是不仅仅要查出购物车当中的这些商品信息,同时还要去查到购物车当中这些商品的最新的价格和状态信息,跟购物车当中的快照进行一个对比,从而去提醒用户。 现在我们已经做了服…...
[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置
🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01:Selenium 工具介绍 Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的,类似于我们玩游戏用的按…...
【RAGFlow】windows本地pycharm运行
原因 由于官方只提供了docker部署,基于开源代码需要实现自己内部得逻辑,所以需要本地pycharm能访问,且docker运行依赖得其余组件,均需要使用开发服务器得配置。 修改过程 安装python 项目依赖于Python 版本:>3.1…...
git子仓库管理的两种方式
在团队协作中选择使用 Git Submodule 还是 Git Subtree 取决于项目的需求和团队的工作方式。以下是两者的对比和适用场景分析,帮助你做出选择: Git Submodule 优点 独立性高 子模块是一个独立的仓库,拥有自己的提交历史和分支。这使得子模…...
树莓派5首次开机保姆级教程(无显示器通过VNC连接树莓派桌面)
第一次开机详细步骤 步骤一:树莓派系统烧录1 搜索打开烧录软件“Raspberry Pi Imager”2 选择合适的设备、系统、SD卡3 烧录配置选项 步骤二:SSH远程树莓派1 树莓派插电2 网络连接(有线或无线)3 确定树莓派IP地址 步骤三ÿ…...
html-表格标签
一、表格标签 1. 表格的主要作用 表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据 的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理。 总…...
大模型安全新范式:DeepSeek一体机内容安全卫士发布
2月以来,DeepSeek一体机几乎成为了政企市场AI消费的最强热点。 通过一体机的方式能够缩短大模型部署周期,深度结合业务场景,降低中小企业对于大模型的使用门槛。据不完全统计,已约有超过60家企业基于DeepSeek推出一体机产品。 但…...
数据分析绘制随时间顺序变化图加入线性趋势线——numpy库的polyfit计算一次多项式拟合
import pandas as pd import numpy as np import matplotlib.pyplot as plt# 导入数据 data pd.read_csv(rC:\Users\11712\notebooktrain1.csv)# 假设数据包含 date_time 和 speed 列 data[date_time] pd.to_datetime(data[date_time]) # 确保时间列是 datetime 类型 data.s…...
密闭空间可燃气体监测终端:守护城市命脉,智驭燃气安全!
近年来,陕西省高度重视燃气安全,出台了一系列政策文件,旨在全面加强城镇燃气安全监管,防范化解重大安全风险。2023年,陕西省安委会印发《全省城镇燃气安全专项整治工作方案》,明确要求聚焦燃气经营、输送配…...
阿里千问大模型(Qwen2.5-VL-7B-Instruct)部署
参考链接 知乎帖子 B站视频 huggingface 镜像网站(不太全,比如 Qwen/Qwen2.5-VL-7B-Instruct就没有) huggingface 5种下载方式汇总 通过huggingface-cli下载模型 不一样的部分是预训练权重的下载和demo 首先安装huggingface_hub pip insta…...
【人工智能】随机森林的智慧:集成学习的理论与实践
随机森林(Random Forest)是一种强大的集成学习算法,通过构建多棵决策树并结合投票或平均预测提升模型性能。本文深入探讨了随机森林的理论基础,包括决策树的构建、Bagging方法和特征随机选择机制,并通过LaTeX公式推导其偏差-方差分解和误差分析。接着,我们详细描述了随机…...
Javascript基础语法详解
面向对象的语言.脚本语言,不需要编译,浏览器解释即可运行 .用于控制网页的行为.浏览器的source可以打断点调试, console输入代码可以执行 use strict指令: 在“严格模式”下运行js代码, 防止意外创建全局变量等, 提高代码安全性和执行效率. 使用: 全局严格模式:…...
前端状态管理 pinia和vuex高频面试题
前端状态管理 Pinia 和 Vuex 是 Vue 生态中常用的状态管理方案,在面试中经常涉及 基本概念、对比、最佳实践、性能优化 等多个方面。以下是 高频面试题 详细答案,共 20 题,助你轻松应对面试!🚀 🔥 基础概念…...
【Go学习实战】03-3-文章评论及写文章
【Go学习实战】03-3-文章评论及写文章 文章评论注册valine获取凭证加载评论页面 写文章修改cdn位置完善功能查看页面 发布文章POST发布文章发布文章测试 查询文章详情查询详情测试 修改文章修改文章测试 写文章图片上传前端后端逻辑测试 文章评论 这里我们的博客因为是个轻量级…...
从零开始用AI开发游戏(一)
1. 核心玩法设计 核心目标:玩家需在随机生成的3D迷宫中寻找出口,躲避陷阱、收集道具、解开谜题。核心机制: 随机生成迷宫:每次游戏生成不同结构的迷宫(递归分割算法或深度优先搜索)。第一人称视角…...
AI-大模型中的流式输出与非流式输出
1.前言 在大模型API开发中,流式与非流式输出对应着两种不同的数据交互,在代码中stream中通过参数true与false来进行设定。 2.流式输出与非流式输出的原理 2.1.非流式输出-请求一次响应返回完整数据 非流式输出,传统的请求-响应模式…...
【HarmonyOS Next】鸿蒙加固方案调研和分析
【HarmonyOS Next】鸿蒙加固方案调研和分析 一、前言 根据鸿蒙应用的上架流程,本地构建app文件后,上架到AGC平台,平台会进行解析。根据鸿蒙系统的特殊设置,仿照IOS的生态闭环方案。只能从AGC应用市场下载app进行安装。这样的流程…...
树莓集团现状最新进展:宜宾园区业务有何新突破
树莓集团宜宾园区在当下取得了令人瞩目的最新进展和新突破。在技术创新方面,园区加大研发投入,成功攻克了多项关键技术难题。 例如,在人工智能图像识别技术上取得重大突破,该技术已应用于园区内的智能安防系统和工业生产检测环节…...
蓝桥杯javaB组备战第二天 题目 区间次方和 编号3382
这是一个前缀和问题,但是不同于以为前缀和问题 前缀和问题求解思路: 创建一个前缀数组 s[] ,存储输入的元素的a[1]到a[n]的和 及:s[1] s[i-1]a[i] ,i>1 这样比暴力算法的复杂度要低很多可以将 时间复杂度从O(q*n*m)下降到 O(n*mq) …...
SpringBoot设置过滤器(Filter)或拦截器(Interceptor)的执行顺序:@Order注解、setOrder()方法
Java Web 过滤器、拦截器、监听器,系列文章: (1)过滤器(Filter)的使用: 《Servlet过滤器(Filter)的使用:Filter接口、@WebFilter注释》 《SpringMVC使用过滤器(Filter)解决中文乱码》 《SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配…...
【git】补丁文件
项目中总有一些本地修改是既不能上传到远程分支又不能直接加入到.gitignore文件中的。 固然可以使用stash但它毕竟只是一种临时保存更改的机制,更适用于本地开发过程中需要频繁切换任务的场景。 如果想要共享代码更改,那还是补丁文件更合适一些。git d…...
linux自启动服务
在Linux环境中,systemd是一个系统和服务管理器,它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务,以及如何设置服务自启动。 使用Systemd设置自启动服务 创…...
Yashan DB 对象管理
一、什么是数据库对象 数据库对象是数据库里面用来存储和指向数据的各种概念和结构的总称。数据库支持的对象包括: • 表:表是一个逻辑概念,是数据库组织管理数据的基本单位。 • 索引:索引是建立在表上的逻辑对象,索…...
《Android 平台架构系统启动流程详解》
目录 一、平台架构模块 1.1 Linux 内核 1.2 硬件抽象层 (HAL) 1.3 Android 运行时 1.4 原生 C/C 库 1.5 Java API 框架 1.6 系统应用 二、系统启动流程 2.1 Bootloader阶段 2.2 内核启动 2.3 Init进程(PID 1) 2.4 Zygote与System Serv…...
强化学习(赵世钰版)-学习笔记(3.最优策略与贝尔曼最优方程)
这是本章在课程中的位置,属于基础工具中的最后一章,主要讨论了最优状态值(Optimal State Value)与最优策略(Optimal Policy),并介绍了对应的计算方法-贝尔曼最优方程(Bellman Optima…...
六十天前端强化训练之第十一天之事件机制超详解析
欢迎来到编程星辰海的博客讲解 目录 一、事件模型演进史 1.1 原始事件模型(DOM Level 0) 1.2 DOM Level 2事件模型 1.3 DOM Level 3事件模型 二、事件流深度剖析 2.1 捕获与冒泡对比实验 2.2 事件终止方法对比 三、事件委托高级应用 3.1 动态元…...
调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录
调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录——从勾选一个选项到理解半主机模式,嵌入式开发的认知升级 📌 现象描述:调试与烧录的诡异差异 在线调试时 程序正常运行 - 独立运行时 设备无响应 ! 编译过程 0 Err…...
基于SpringBoot实现旅游酒店平台功能八
一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上࿰…...
ArcGIS Pro中字段的新建方法与应用
一、引言 在地理信息系统(GIS)的数据管理和分析过程中,字段操作起着至关重要的作用。 无论是进行地图制作、空间分析还是数据统计,字段都是承载属性信息的基本单元。 ArcGIS Pro作为一款功能强大的GIS软件,为用户提…...
c#面试题12
1.ApplicationPool介绍一下 c#里没有 2.XML 可扩展标记语言,一般以.xml文件格式的形式存在。可用于存储结构化的数据 3.ASP.NET的用户控件 将原始的控件,用户根据需要进行整合成一个新的控件 4.介绍一下code-Behind 即代码后置技术,就是…...
