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í),就會(huì)造成端口沖突,下面給出解決方法2013-12-12
一文詳解如何通過Java實(shí)現(xiàn)SSL交互功能
這篇文章主要為大家詳細(xì)介紹了如何通過Java實(shí)現(xiàn)SSL交互功能,文中的示例代碼講解詳細(xì),對我們的學(xué)習(xí)或工作有一定的幫助,需要的可以參考一下2023-04-04
Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖
今天小編就為大家分享一篇關(guān)于Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測試的操作詳解
這篇文章主要介紹了SpringBoot動(dòng)態(tài)數(shù)據(jù)源連接測試的操作步驟,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
J2SE基礎(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-10
Springboot非分布式定時(shí)任務(wù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Springboot非分布式定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11

