新闻详情

新闻详情

首页 / 资讯中心 / 详情

java feign调用第三方服务出现序列化错误的排查过程

发布时间:2026/9/15 21:37:57来源:尧图网络
java feign调用第三方服务出现序列化错误的排查过程
一、背景java服务调用另一个java服务的接口大多是通过服务注册中心使用java feign client 去调用http接口。写法如下其本质是一个http请求入参和返回值会自动序列化。本文分享一个因为序列化失败而报错的排查案例。二、报错{“traceId”:null,“code”:10500724010,“msg”:“获取资源详情异常DataCenterServiceClient#findPersonResourceByUserIdV4(Long,String,Boolean,Boolean,String,Integer,Integer,Boolean,Integer,Integer,Integer,String) failed and no fallback available.”,“description”:null,“errors”:null}第一反应是对方的服务挂了所以feign调用出错。但是部分用户调用失败注意是部分。当我们拿到报错用户的账户进行登录该错误在本地复现了也就是说这个错误是必现的。所以我们得出的结论是脏数据导致查询报错。但是问题来了凡事就怕但是怎么个脏数据呢三、第一次调试过程因为之前的程序写法调用别的java服务接口前并不会打印请求入参特别是查询类的接口。一般地如果是操作类的接口我们要求程序应该输出请求和返回日志。所以因为只有生产环境的数据能够复现所以我们部署了一套灰度环境。其次在调用外部服务的接口前增加了打印日志输出请求参数的内容。示例有了请求值就可以手动调用三方服务的接口。出乎外料之外的是手动调用三方服务的接口返回正常并不报错。所以我们必须打印feign调用的返回值。于是我们继续排查。。。四、打开feign调用的日志1、FeignConfig建议所有的spring boot程序框架都实例化该类。// 配置 Feign 日志级别ConfigurationpublicclassFeignConfig{BeanLogger.LevelfeignLoggerLevel(){// 可选NONE, BASIC, HEADERS, FULLreturnLogger.Level.FULL;}}2、配置# application.yml# 日志级别设为 DEBUG 或 FULLlogging: level:# 你的 Feign Client 接口全限定名com.xxx.xxx.client.DataCenterServiceClient: debug如此便能得到这个类下的所有方法的出入参信息。原来feign调用报错了是一个内部错误feign.codec.DecodeException难怪被吞掉了打印异常的时候只能看到failed and no fallback available五、解决问题通过feign调用日志我们得知是其中的字段fileLength长度越界了。对方是Long类型定义的一个字段而我们接收方却定义为Integer。1、三方服务的接口返回值定义2、接收方的返回值定义于是乎出现了数据越界的错误feign调用的时候反序列化出错。六、总结本文通过打印feignClient调用的出入参信息得以知晓反序列化出错导致接口调用报错。也提醒我们feign调用的日志输出对于解决线上程序报错的重要性程序应该默认实例化Logger.Level其次因为feign调用的日志输出量非常大平常是关闭状态等到要跟踪生产的问题将排得上用场。最后定义字段的时候整型还是长整型真的是个坑。测试也很难看出来所以在生产进行测试的时候不要只以自己的数据为测试结果。所以用户上线后选取部分典型数据进行灰度测试非常必要。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

es-toolkit compat trim 详解:Lodash 兼容版字符串裁剪的用法、参数语义与源码实现 2026/9/16 17:13:30

es-toolkit compat trim 详解:Lodash 兼容版字符串裁剪的用法、参数语义与源码实现

es-toolkit compat trim 详解:Lodash 兼容版字符串裁剪的用法、参数语义与源码实现 【免费下载链接】es-toolkit A modern JavaScript utility library thats 2-3 times faster and up to 97% smaller, a major upgrade to lodash. 项目地址: https://gitcode.com…

阅读更多 →
CTP Java接口Windows部署实战:DLL加载、协议对接与排错 2026/9/16 17:13:30

CTP Java接口Windows部署实战:DLL加载、协议对接与排错

简介:本资源是一套基于Java 8开发的CTP期货交易接口完整实现方案,专为Windows平台下的量化交易开发者、金融系统集成工程师及高校金融信息技术实践者设计,解决上期所行情与交易数据实时接入难题。压缩包共7个文件,含3个关键DLL动态…

阅读更多 →
SpringBoot+Vue美食平台毕业设计实战解析 2026/9/16 17:13:30

SpringBoot+Vue美食平台毕业设计实战解析

1. 项目概述与核心价值这个基于SpringBootVue的美食烹饪互动平台,本质上是一个面向高校计算机专业学生的毕业设计解决方案。它完整实现了前后端分离的现代Web开发架构,包含可运行的项目源码、规范的SQL脚本和详细的接口文档。对于正在寻找Java Web方向毕…

阅读更多 →
multi-agent-orchestrator TypeScript 本地快速上手:用 MultiAgentOrchestrator 构建多智能体编排应用 2026/9/16 17:13:30

multi-agent-orchestrator TypeScript 本地快速上手:用 MultiAgentOrchestrator 构建多智能体编排应用

multi-agent-orchestrator TypeScript 本地快速上手:用 MultiAgentOrchestrator 构建多智能体编排应用 【免费下载链接】agent-squad Flexible and powerful framework for managing multiple AI agents and handling complex conversations 项目地址: https://gi…

阅读更多 →
YOLOv5 架构深度解析:模型结构、数据增强、训练策略与损失计算全指南 2026/9/16 17:13:30

YOLOv5 架构深度解析:模型结构、数据增强、训练策略与损失计算全指南

YOLOv5 架构深度解析:模型结构、数据增强、训练策略与损失计算全指南 【免费下载链接】yolov10 YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024] 项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10 导读 本文以 Ultralytics 官方…

阅读更多 →
Munder Difflin的FIPA-Lite消息模式:7字段设计如何防止两个Agent无限乒乓球 2026/9/16 17:10:30

Munder Difflin的FIPA-Lite消息模式:7字段设计如何防止两个Agent无限乒乓球

Munder Difflin的FIPA-Lite消息模式:7字段设计如何防止两个Agent无限乒乓球 【免费下载链接】munder-difflin A local multi-agent harness that works with your existing Claude Code, Codex subscriptions, allows you to run an office of agents 项目地址: h…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞