feign客戶端設(shè)置超時(shí)時(shí)間操作
我就廢話不多說了,大家還是直接看代碼吧~
/** * feign調(diào)用客戶端 */ @FeignClient(name = "user", url = "${user.url}", configuration = MyFeignDecoder.class) public interface UserClient { @GetMapping("/rest/user/get/detail/{loginName}") JSONObject getUserInfoByLoginName(@PathVariable(value = "loginName") String loginName); }
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Scope; import com.iflytek.icourt.exception.UnloginErrorException; import com.iflytek.icourt.secretary.constant.Constant; import com.netflix.hystrix.exception.HystrixBadRequestException; import feign.Request; import feign.Response; import feign.codec.Encoder; import feign.jackson.JacksonEncoder; /** * feign配置類 */ @Configuration public class MyFeignDecoder implements feign.codec.ErrorDecoder{ public static Logger logger = LoggerFactory .getLogger(MyFeignDecoder.class); @Override public Exception decode(String methodKey, Response response) { logger.info("status:-------" + response.status()); return feign.FeignException.errorStatus(methodKey, response); } @Bean @Primary @Scope("prototype") public Encoder jacksonEncoder () { return new JacksonEncoder(); } @Bean Request.Options feignOptions() { return new Request.Options(2 * 1000, 120 * 1000); } }
補(bǔ)充知識:feign調(diào)用問題\超時(shí)
1、項(xiàng)目結(jié)構(gòu) 每個(gè)微服務(wù)是provider情況下有一個(gè)client模塊(里面含有定義好的feignclient 接口) 專門打包出去給其他微服務(wù)消費(fèi)
這樣的話 其他需要調(diào)用的微服務(wù)只要把這個(gè)client jar包引入即可,
2、在其他微服務(wù)中 引入clientXX.jar 這時(shí)候有一個(gè)坑, 就是 @EnableFeignClients這個(gè)注解默認(rèn)是只掃描項(xiàng)目啟動(dòng)application下的包 如果不同項(xiàng)目可能包路徑不一致, 所以@EnableFeignClients得指定你的client.jar里面的路徑 或者兩個(gè)項(xiàng)目中 共同的頂級路徑 例如com.XX.cloud 同一個(gè)公司內(nèi)部 頂層包結(jié)構(gòu)應(yīng)該是一致的
3、feign調(diào)用超時(shí) 默認(rèn)feign調(diào)用超時(shí)是1000毫秒的 有斷點(diǎn)就肯定超時(shí)
需要加上以下配置
feign.hystrix.enabled=true #feign調(diào)用默認(rèn)是1000毫秒=1秒 應(yīng)該設(shè)置成更長時(shí)間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 #請求處理的超時(shí)時(shí)間 add by six-vision ribbon.ReadTimeout=300000 ribbon.SocketTimeout=300000 #請求連接的超時(shí)時(shí)間 add by six-vision ribbon.ConnectTimeout: 30000
以上這篇feign客戶端設(shè)置超時(shí)時(shí)間操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決grails服務(wù)端口沖突的辦法(grails修改端口號)
grails中默認(rèn)的服務(wù)端口為8080,當(dāng)本機(jī)中需要同時(shí)啟動(dòng)兩個(gè)不同的項(xiàng)目時(shí),就會造成端口沖突,下面給出解決方法2013-12-12一文詳解如何通過Java實(shí)現(xiàn)SSL交互功能
這篇文章主要為大家詳細(xì)介紹了如何通過Java實(shí)現(xiàn)SSL交互功能,文中的示例代碼講解詳細(xì),對我們的學(xué)習(xí)或工作有一定的幫助,需要的可以參考一下2023-04-04Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖
今天小編就為大家分享一篇關(guān)于Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測試的操作詳解
這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測試的操作步驟,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03J2SE基礎(chǔ)之在Eclipse中運(yùn)行hello world
本文的內(nèi)容非常的簡單,跟隨世界潮流,第一個(gè)Java程序輸出“Hell World!”。希望大家能夠喜歡2016-05-05教你如何用Jenkins自動(dòng)化部署項(xiàng)目(從零到搭建完成)
這篇文章主要介紹了教你如何用Jenkins自動(dòng)化部署項(xiàng)目(從零到搭建完成),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Springboot非分布式定時(shí)任務(wù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Springboot非分布式定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11