feign客戶端設置超時時間操作
我就廢話不多說了,大家還是直接看代碼吧~
/**
* feign調用客戶端
*/
@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);
}
}
補充知識: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

以上這篇feign客戶端設置超時時間操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決grails服務端口沖突的辦法(grails修改端口號)
grails中默認的服務端口為8080,當本機中需要同時啟動兩個不同的項目時,就會造成端口沖突,下面給出解決方法2013-12-12
SpringBoot動態(tài)數(shù)據(jù)源連接測試的操作詳解
這篇文章主要介紹了SpringBoot動態(tài)數(shù)據(jù)源連接測試的操作步驟,文中通過代碼示例和圖文結合的方式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-03-03

