您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Spring Feign超時如何設置”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Spring Feign超時如何設置”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Feign 底層依賴于 Ribbon 實現負載均衡和遠程調用。
Ribbon默認1秒超時。
超時配置:
ribbon:
ConnectTimeout: 1000 #連接超時時間,毫秒
ReadTimeout: 1000 #邏輯處理超時時間,毫秒
在feign-consumer中設置超時時間
server:
port: 9000eureka:
instance:
hostname: localhost # 主機名
client:
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: feign-consumer # 設置當前應用的名稱。將來會在eureka中Application顯示。將來需要使用該名稱來獲取路徑#設置Ribbon的超時時間
ribbon:
ConnectTimeout: 1000 #鏈接超時時間,默認1s
ReadTimeout: 3000 #邏輯處理的超時時間 默認1s
provider超時2s測試
Goods goods = goodsservice.findOne(id); //當前現場睡眠2秒 try { Thread.sleep( millis: 2000); }catch (InterruptedException e) { e.printStackTrace(); //java.net.SocketTimeoutException: Read timed out } goods.setTitle(goods.getTitle() + ":" + port);//將端口號,設置
Feign 只能記錄 debug 級別的日志信息。
logging:
level:
com.itheima: debug //包名
定義Feign日志級別Bean
@Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; }
啟用該Bean:
@FeignClient(configuration = XxxConfig.class)
#設置當前的日志級別 debug,feign 只支持記錄debug級別的日志
logging:
level:
com.itheima: debug
package com.itheima.consumer.config; import feign.Logger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class FeignLogConfig { /** * NONE, 不記錄 * BASIC, 記錄基本的請求行,響應狀態碼數據 * HEADERS, 記錄基本的請求行,響應狀態碼數據,記錄響應頭信息 * FULL 記錄完整的請求,響應數據 * @return */ @Bean public Logger.Level level(){ return Logger.Level.FULL; } }
package com.itheima.consumer.feign; import com.itheima.consumer.config.FeignLogConfig; import com.itheima.consumer.domain.Goods; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; /** * feign聲明式接口 發錢遠程調用的 * String url = "http://FEIGN-PROVIDER/goods/findOne/"+id; * // 3. 調用方法 * Goods goods = restTemplate.getForObject(url, Goods.class); * * 1 定義接口 * 2 接口上添加注解 @FeignClient 設置value屬性為服務提供的 應用名稱 * 3 編寫調用接口,接口的聲明規則和提供方接口保持一致 * 4 注入該接口對象,調用接口方法完成遠程調用 */ @FeignClient(value = "FEIGN-PROVIDER",configuration = FeignLogConfig.class) public interface GoodsFeignClient { @GetMapping("/goods/findOne/{id}") public Goods findGoodsById(@PathVariable("id") int id); }
讀到這里,這篇“Spring Feign超時如何設置”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。