摘要:主要是總結(jié)了一下這段時間在使用 feign 的過程中的遇到的一些坑點。
一、Get請求自動轉(zhuǎn)化成POST的問題
1、client 請求參數(shù)沒有加上 @RequestParam 注解
問題代碼:
@GetMapping("/showName") StringshowName(Stringname);
錯誤提示:
[{"timestamp":"2022-12-14T0922.370+00:00","status":405,"error":"MethodNotAllowed","path":"/showName"}]
修改建議:
在對應的請求參數(shù)上加上 @RequestParam 注解,代碼示例如下所示:
@GetMapping("/showName") StringshowName(@RequestParam("name")Stringname);
2、client 請求參數(shù)中使用了 @RequestBody 注解
問題代碼:
@GetMapping("/showBody") StringshowBody(@RequestBodyStringbody);
錯誤提示:
[{"timestamp":"2022-12-14T1008.943+00:00","status":405,"error":"MethodNotAllowed","path":"/showBody"}]
原因:
okhttp 和 HttpURLConnection 不支持 @RequestBody + RequestMethod.GET,只有 httpclient 支持,默認使用 HttpURLConnection。
修改建議:
1、最佳建議:要求提供方,更改為Post請求
2、使用 httpclient
引入 httpclient 包
io.github.openfeign feign-httpclient
修改配置:
feign.httpclient.enabled=true
二、Feign Hystrix 熔斷、線程使用坑點
hystrx 官方配置解釋地址:
https://github.com/Netflix/Hystrix/wiki/Configuration
線程池隊列配置問題
常用配置:
#核心線程池大小,默認值為:10 hystrix.threadpool.default.coreSize=10 #調(diào)用超時時間,默認值為1000ms hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=15000 #最大線程池大小,這是在不開始拒絕的情況下可以支持的最大并發(fā)量。默認值為10。 hystrix.threadpool.default.maximumSize=50 #隊列大小拒絕閾值,默認值為5。即使maxQueueSize未達到也會發(fā)生拒絕。在maxQueueSize==-1時不生效。 hystrix.threadpool.default.queueSizeRejectionThreshold=100 #maximumSize配置是否生效,默認值為false。maximumSize可以等于或高于coreSize。 #設置coreSize
錯誤配置①:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=1000
feign使用的是懶加載,第一次調(diào)用時,會初始化各種bean,速度很慢,默認1秒很容易超時。
錯誤配置②:
hystrix.threadpool.default.coreSize=10 hystrix.threadpool.default.maxQueueSize=1000 hystrix.threadpool.default.queueSizeRejectionThreshold=20
因為 queueSizeRejectionThreshold 太小,實際上在并發(fā)達到 30 以上的時候,就會拒絕后面的請求了。
錯誤配置③:
hystrix.threadpool.default.coreSize=10 hystrix.threadpool.default.maxQueueSize=20 hystrix.threadpool.default.queueSizeRejectionThreshold=1000
因為 maxQueueSize 太小,實際上在并發(fā)達到 30 以上的時候,就會拒絕后面的請求了。
審核編輯:湯梓紅
-
代碼
+關注
關注
30文章
4779瀏覽量
68521 -
線程
+關注
關注
0文章
504瀏覽量
19675
原文標題:feign 調(diào)用常見問題避坑指南!
文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論