微服务调用没有返回值,无法组成对象,但是会有feign的信息

news/2024/11/20 22:38:11/

事件起因

还是那个项目,至少对于我来说要学习的东西其实还是挺多的。

需求

员工信息管理,员工简历,导出功能,需要去联查员工的各项信息,其中,涉及到微服务的之间的操作出现了问题,目前主要的微服务是person服务,需要向basic-config服务请求具体的帮助,然后获取到null的结果,因为接手的是成型代码,所以不敢大规模的改动,目前情况是person服务没有收到basic-config服务的返回值,但是basic-config服务收到了person服务的请求与参数。
在这里插入图片描述

分析

首先,因为这个是成型的代码,所以没有太大的问题,而且微服务之间的是相互通的,这是大前提。其次,项目年头挺长了,确实有两边相同实体但是不一致的情况,可能是因为历史问题有些内容没有成功提交,或者提交了但是不在我们目前掌握的项目之中,定下了其中的一个方向就是实体不一致的问题。

问题处理

首先,我们朝着实体的角度去考虑,确实两边实体有轻微不一致,包括有的地方是使用手写的getset有的是使用直接生成的lombok的Getter、Setter、ToString。
而且两边实体极其麻烦,是由三层架构组成。在这里插入图片描述
确实在比较上面花费了我很大的心思,就是一个实体,里面存在的包含的因素是一个list,然后这个list他也是包含了一个list,这一步我大概花费了不断地时间。
在这里插入图片描述
其实转机在这里,确实我是没有注意到,BasicConfigFeignService日志打印已经将BasicConfig服务的返回值打印出来了,还有个没有注意到的点就是,当我在postman访问的时候,person服务和basicconfig服务在person服务请求basicconfig服务的过程中同时响应了,
在这里插入图片描述
同一个请求,两边同时响应了,其实就是意味着其实,这一块被熔断了,当basicconfig服务在执行获取数据组织数据时,person已经熔断了,已经返回了null,等basicconfig执行完之后将数据传回person服务的时候其实已经结束了,所以在BasicConfigFeignService会打印出basicconfig的返回值。
相应的验证其实我也应该意识到了,其实当实体比较没有生效的时候提出了两个解决办法。
第一个还是对于实体的一个怀疑,将basicconfig服务中的实体全部迁移到person中,发现问题没有改变,最后放弃这个想法的做法将person服务接受返回值的参数从实体修改为String,发现String也是空的,就放弃这个想法。
第二个想法是有没有可能是数据量过大,因为我们观察了BasicConfigFeignService日志返回的结果,发现数据量确实不小,大概是成百上千条,然后我这边不想大规模破坏对应的代码转而使用了在basicconfig服务执行完成之前的一步,去除多余数据,然后发现没有生效,要是我当时使用直接全部新建一套实体其实早就可以发现这个问题了。
从postman调用的时候其实就已经很明显了,问题是出现在feign的熔断,原本feign 的配置是
在这里插入图片描述
修改为
在这里插入图片描述
取消熔断,并且加强超时间
然后问题处理,就是因为执行时间过长,导致的。
虽然整件事的最后以扣掉这个功能的前台按钮未结束,但是我确实学到了东西。


http://www.ppmy.cn/news/1127444.html

相关文章

IP地址定位的特点

IP地址定位是一种广泛应用于网络领域的技术,它允许我们确定特定设备或用户在互联网上的位置。这项技术在很多方面都具有重要的特点,本文将深入探讨这些特点。 1.全球性覆盖: IP地址定位IP66_ip归属地在线查询_免费ip查询_ip精准定位平台具有全…

Java项目-Spring Boot的生鲜网上交易系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 系统功能4 功能设计5系统详细设计5.1系统功能模块5.2后台功能模块5\.2\.1用户功…

Ubuntu安装Oracle JDK

文章目录 下载JDK安装Oracle JDK验证安装 下载JDK Oracle JDK需要从Oracle的官方网站下载,访问Oracle的官方网站并下载所需版本的JDK。 https://www.oracle.com/java/technologies/downloads/#java17 安装Oracle JDK 2.1. 下载.tar.gz文件后,移动到适…

基础练习-2

基础练习-2 11. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析: 兔子的规律为数列…

linux使用操作[1]

文章目录 版权声明快捷键ctrl c 强制停止ctrl d 退出、登出history命令光标移动快捷键清屏快捷键 软件安装命令常见linux系统包管理器yum命令apt命令 systemctl命令软连接日期&时区修改linux时区ntp程序 IP地址&主机名ip&主机名域名解析win配置主机名映射虚拟机…

Java中的IO流的缓冲流

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴IO流体系结构🌴缓冲流1.提高效率的原理2.缓冲流的类型3.字符缓冲流两个特有方法 🌴总结 🌴IO流体系…

【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 19 Sep 2023 (showing first 100 of 106 entries) Totally 106 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Speaker attribution in German parliamentary debates with QLoRA-ada…

自定义热加载:如何不停机实现核心代码更新

文章目录 1. 常见的几种实现代码热更新的几种方式对于开发环境我们可以使用部署环境1. 使用 Arthas 的 redefine 命令来加载新的 class 文件2. 利用 URLClassLoader 动态加载3. 通过Java的Instrumentation API 也是可以实现的 2. 实现1. ClassScanner扫描目录和加载类2. 定时任…