网易首页 > 网易号 > 正文 申请入驻

Feign 调用常见问题避坑指南

0
分享至

很多时候,我们在使用微服务框架的时候,就基本上少不了与feign打交道。

毕竟服务之间的调用,基本上都不会用http调了,这样显得有点麻烦了,feign更方便了。

而且feign,还自带了负载均衡的策略(ribbon提供),如果我们的服务是集群的,feign还能负载调用。面试宝典:https://www.yoodb.com

这些估计大家都懂吧?不会还有人不懂吧?那这个要深入学习了。哈哈

在用feign的日常中,难免会遇到些问题,那下面,我来总结下,我在项目开发中遇到的问题喽。

哈哈,虽说不是大问题,但至少是点经验分享喽,希望可以帮助到大家。

好啦,下面开始喽!!!

在使用feign调用的使用出现400 Bad request的问题。

2.1.2 代码如下@PostMapping("/llsydn/getMenusByIdsAndTypes")
List getMenusByIdsAndTypes(@RequestParam("menuIds") String menuIds,
@RequestParam("menuType") String menuType);

这个 menuIds 数量比较多,导致400 错误。发现问题出在menuIds 跟在URL后面。

2.1.3 解决办法

将方法修改为:

@PostMapping("/llsydn/getMenusByIdsAndTypes")
List getMenusByIdsAndTypes(@RequestBody MultiValueMap queryParam);

调用方法修改成:

public List getMenusByIdsAndNotType(String menuIds, String menuType){
MultiValueMap valueMap=new LinkedMultiValueMap();
valueMap.add("menuIds",menuIds);
valueMap.add("menuType",menuType);
return systemClient.getMenusByIdsAndTypes(valueMap);
2.2. 非法字符错误 2.2.1 错误信息

在系统调用系统脚本的接口的时候抛出如下的错误。

Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
2.2.2 错误原因

是feign 调用的时候启用了压缩导致的。

3.2.3 解决办法

  • 1.关闭压缩即可。

将配置改成:

feign.compression.request.enabled=false
feign.compression.response.enabled=false

  • 2.或者使用okHttp


io.github.openfeigngroupId>
feign-okhttpartifactId>
dependency>
2.3. 字符串中文乱码问题 2.3.1 错误信息

在Feign调用时,传到目标服务的方法中,字符串里的中文变成问号了,面试题宝典:https://www.yoodb.com

2.3.2 解决办法

在Feign的接口的注解中指定consumes字符集:

@PostMapping(value = "/portal/core/appdata/install",consumes = "application/json;charset=UTF-8")
void install(@RequestBody String data);

如果此时data为[{},{}]格式的JSON字符串,即JSON数组字符串,又会报参数类型不匹配的错误,要把参数改为对象数组或者List对象:

@PostMapping(value = "/portal/core/appdata/install",consumes = "application/json;charset=UTF-8")
void install(@RequestBody Object[] data);
2.4. too many Body parameters问题 2.4.1 问题描述

feign的post请求只能有一个body feign的post方法中,只能使用一个@RequestBody或者不带该注解,不能使用多个@RequestBody。

否则会报错nested exception is java.lang.IllegalStateException: Method has too many Body parameters。
2.4.2 解决办法

只保留一个@RequestBody注解

2.5. Read timed out问题 2.5.1 问题描述

feign调用超时,会出现这个问题。

一般来说当我们的业务需要处理的时间很大时,会出现这个问题。例如,上传excel文件。

那这里我们可以进行feign的超时时间设置。这里只针对指定的feign client

2.5.2 解决办法@FeignClient(name = "systemClient")
public interface SystemClient {

@RequestMapping(path = "/llsydn/importExcel", consumes = {"multipart/form-data"})
JsonResult importExcel(@RequestPart(name="file") MultipartFile file);
}

  • yml配置

feign:
httpclient:
enabled: true
client:
config:
default:
#默认时间设置为10s,公众号 Java精选,有惊喜
ConnectTimeOut: 10000
ReadTimeOut: 10000
#调用system微服务,默认时间设置为30s
systemClient:
ConnectTimeOut: 30000
ReadTimeOut: 30000

好了,以上就是个人真实项目-FEIGN常见问题的分享了。

作者:llsydn https://juejin.cn/post/7132495545884639240

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

------ 特别推荐 ------

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
以色列,终于活成世人讨厌的样子

以色列,终于活成世人讨厌的样子

春夫杂谈
2026-06-27 18:30:43
韩红籍贯风波升级!官媒曝光真实籍贯,不是西藏,也不是北京

韩红籍贯风波升级!官媒曝光真实籍贯,不是西藏,也不是北京

阿纂看事
2026-06-28 01:38:35
全国唯一健在长征女红军在四川过105岁生日,“红军的火把,是她见过最亮的光”

全国唯一健在长征女红军在四川过105岁生日,“红军的火把,是她见过最亮的光”

封面新闻
2026-06-28 04:44:16
塔雷米:这是一届灾难性的世界杯,足球不该成为政治的一部分

塔雷米:这是一届灾难性的世界杯,足球不该成为政治的一部分

懂球帝
2026-06-27 20:18:28
原杭州大学新闻传播学院副院长李寿福逝世,享年90岁

原杭州大学新闻传播学院副院长李寿福逝世,享年90岁

澎湃新闻
2026-06-27 19:54:26
一场1-0让世界冠军耻辱出局,世界杯黑马再破纪录,韩国坐享其成

一场1-0让世界冠军耻辱出局,世界杯黑马再破纪录,韩国坐享其成

球盲百小易
2026-06-27 13:01:18
穆里尼奥绝不惯着!皇马亿元水货即将出局,世界杯成最后自救机会

穆里尼奥绝不惯着!皇马亿元水货即将出局,世界杯成最后自救机会

澜归序
2026-06-28 08:13:16
2-3爆冷,世乒赛冠军出局!CCTV5直播美国大满贯29日赛程:王楚钦遭内战 王曼昱首秀

2-3爆冷,世乒赛冠军出局!CCTV5直播美国大满贯29日赛程:王楚钦遭内战 王曼昱首秀

好乒乓
2026-06-28 01:11:46
随着克罗地亚2-1加纳,世界杯32强已决出29席,韩国晋级概率暴跌

随着克罗地亚2-1加纳,世界杯32强已决出29席,韩国晋级概率暴跌

侃球熊弟
2026-06-28 07:03:51
荷兰6000万锋霸宣布儿子夭折!不回国+留队踢世界杯 官方送上慰问

荷兰6000万锋霸宣布儿子夭折!不回国+留队踢世界杯 官方送上慰问

风过乡
2026-06-28 05:56:09
重磅官宣!雷霆疯狂大甩卖,12个首轮+17个次轮!

重磅官宣!雷霆疯狂大甩卖,12个首轮+17个次轮!

体育新角度
2026-06-27 18:24:10
不是蠢就是坏:德国铁路瘫痪,四天后甩锅中国,真问题没人敢碰

不是蠢就是坏:德国铁路瘫痪,四天后甩锅中国,真问题没人敢碰

林子说事
2026-06-27 09:39:17
韩国球迷倒打一耙,出局怪中国,日本球迷:这理由过几天我们也用

韩国球迷倒打一耙,出局怪中国,日本球迷:这理由过几天我们也用

酷侃体坛
2026-06-27 17:43:08
“山西挖眼案”受害男孩高考721分,报道该案记者:嫌疑人跳井身亡后动机成谜,曾近距离跟记者打招呼;其伯母为嫌疑人

“山西挖眼案”受害男孩高考721分,报道该案记者:嫌疑人跳井身亡后动机成谜,曾近距离跟记者打招呼;其伯母为嫌疑人

大风新闻
2026-06-27 20:28:18
1场2-0,让英格兰避开死亡半区!世界杯夺冠希望大增,凯恩创历史

1场2-0,让英格兰避开死亡半区!世界杯夺冠希望大增,凯恩创历史

侃球熊弟
2026-06-28 06:08:26
葡萄牙vs哥伦比亚赛前宣读首发,C罗名字响起时现场出现嘘声

葡萄牙vs哥伦比亚赛前宣读首发,C罗名字响起时现场出现嘘声

懂球帝
2026-06-28 07:37:19
佛得角队长门德斯被曝正因强奸指控接受调查 事发今年3月,警方已调取酒店监控

佛得角队长门德斯被曝正因强奸指控接受调查 事发今年3月,警方已调取酒店监控

红星新闻
2026-06-28 08:18:32
广东女子溺亡全程曝光!人被卡石逢,多人救援无果,最后活活憋死

广东女子溺亡全程曝光!人被卡石逢,多人救援无果,最后活活憋死

川渝视觉
2026-06-27 17:09:43
中国铁路很多年没见过这么严峻的形势了

中国铁路很多年没见过这么严峻的形势了

吃货的分享
2026-06-26 20:07:18
韩媒破大防:从94%到17%,居然一个条件都没实现,让一切都毁灭吧

韩媒破大防:从94%到17%,居然一个条件都没实现,让一切都毁灭吧

风过乡
2026-06-28 08:46:17
2026-06-28 09:20:49
Java精选
Java精选
一场永远也演不完的戏
1795文章数 3859关注度
往期回顾 全部

科技要闻

GPT-5.6发布,你暂时用不了!Mythos也放行

头条要闻

佛得角队长被指正因强奸指控接受调查 事发于今年3月

头条要闻

佛得角队长被指正因强奸指控接受调查 事发于今年3月

体育要闻

世界杯最火门将,站到了阿根廷和梅西面前

娱乐要闻

四提白玉兰终封后,杨紫:仍觉不真实

财经要闻

两只股票撑起的韩国股市,半年熔断 33 次

汽车要闻

搭载华为乾崑ADS 5 全新猛士M817上市售29.99万起

态度原创

艺术
本地
数码
房产
公开课

艺术要闻

看完他的局部,我原谅了整个世界的不完美

本地新闻

世界杯球迷节:比球赛更好玩的派对

数码要闻

vivo X Fold6体验: AI交互直觉最对味的折叠大屏!

房产要闻

全国高考大放水,300分就能上本科!论上岸率,海南没输过!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版