Feign的超時時間配置
feign 時間設置
-
contextId
: 可以指定為某個接口進行單獨的超時設置
@FeignClient(value = "user",contextId ="device") public interface DeviceFeignService { @RequestMapping(value = { "/deviceId" }) JsonResult<Device> getByDeviceId(@RequestParam("deviceId") final Long deviceId); }
feign: client: config: #default代表所有服務 default: #feign客戶端建立連接超時時間 connect-timeout: 10000 #feign客戶端建立連接后讀取資源超時時間 read-timeout: 20000 #而service-test表示當調用service-test這個服務時,用下面的配置 device: connect-timeout: 10000 read-timeout: 20000
Feign調用問題 超時
1、項目結構
每個微服務是provider情況下有一個client模塊(里面含有定義好的feignclient 接口) 專門打包出去給其他微服務消費
這樣的話 其他需要調用的微服務只要把這個client jar包引入即可,
2、在其他微服務中 引入clientXX.jar
這時候有一個坑, 就是 @EnableFeignClients這個注解默認是只掃描項目啟動application下的包 如果不同項目可能包路徑不一致, 所以@EnableFeignClients得指定你的client.jar里面的路徑 或者兩個項目中 共同的頂級路徑 例如com.XX.cloud 同一個公司內部 頂層包結構應該是一致的
3、feign調用超時
默認feign調用超時是1000毫秒的 有斷點就肯定超時
需要加上以下配置
feign.hystrix.enabled=true #feign調用默認是1000毫秒=1秒 應該設置成更長時間1000 * 60 * 5 = 5分鐘 add by six-vision hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000 hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000 hystrix.command.default.circuitBreaker.forceClosed=true #hystrix.command.default.execution.timeout.enabled=false #請求處理的超時時間 add by six-vision ribbon.ReadTimeout=300000 ribbon.SocketTimeout=300000 #請求連接的超時時間 add by six-vision ribbon.ConnectTimeout: 30000
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/newlangwen/p/9519307.html