服务之间远程Feign调用,出现参数丢失

最近有同事反映生产上,服务与服务之间远程调用,偶尔会出现 参数丢失的情况。但是,不是所有服务之间都会出现参数丢失,是固定有2个服务之间有这种情况。之前也发现过有这种情况出现,还以为是真的没传参数,这一次大家合力一起研究了下,发现是偶发情况。

打断点,压力测,网上寻求答案。终于找到了问题所在,先贴个大佬的解释 偶现的MissingServletRequestParameterException,谁动了我的参数?,解析得很详细。一查发现,果然,这两个出现参数丢失的服务里,有在异步方法中传递使用 HttpServletRequest 的情况。

总结下:

在Tomcat中,Request以及Response对象是会被 循环使用 的。如果在 异步 方法里(比如使用 @Async 等)使用 HtttpServletRequest 对象,有可能会导致请求参数不被解析,从而报错 org.springframework.web.bind.MissingServletRequestParameterException: Required long parameter 'xxx' is not present。

所以,我们切记在异步方法中 不要传递使用 HttpServletRequest。

与其花许多时间和精力去凿许多浅井,不如花同样的时间和精力去凿一口深井。-- 烟沙九洲

相关推荐
白杨尚青14 分钟前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
anew___28 分钟前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法
天天向上29130 分钟前
Spring AI 实战:14 个踩坑记录,其中一个让我的测试全绿但产品是坏的
java·开源
正在走向自律39 分钟前
从只写接口到独立交付前后端,飞算JavaAI能给Java后端工程师多少溢价?
java·springboot·ai编程·全栈开发·java求职·飞算javaai·金九银十
a努力。1 小时前
LangChain Agent消息链路全解析
java·前端·javascript
SL_staff1 小时前
物模型是设备的数字身份证:属性、事件、服务如何决定IoT系统扩展性
java·物联网·全栈
资深技术分享员1 小时前
Geejing WebBuilder 日志、在线用户、系统监控,出问题时的三个第一现场
java·运维·数据库
卓怡学长1 小时前
w202springboot基于B_S架构的图书信息管理系统
java·spring boot·spring·intellij-idea
走到天涯海角2 小时前
用springBoot写几个简单的接口
java·spring boot·intellij-idea
troy1282 小时前
Java 技术栈全景指南:从基础到微服务的完整知识体系
java·开发语言·微服务