FeignClient里如何進行重試(Retry)和超時(timeout)配置
FeigninClient的默認connectTimeout為10s,readTimeout為60。僅設置超時可能不會立即生效,因為默認重試次數為5次。 因此,如果想要快速失敗,則必須同時自定義超時和重試的參數,並應確保反向代理。 例如,nginx的proxy_connect_timeout和proxy_read_timeout必須大於feign的配置才能生效。 否則,nginx的504網關超時仍然會被外部用戶感知,並且無法實現回滾效果。
- 配置類
package cn.com.hopson.hopsonone.park.js.conf;
import feign.Request;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class FeignConfig {
/**
* 配置請求重試
*/
@Bean
public Retryer feignRetryer() {
return new Retryer.Default(200, TimeUnit.SECONDS.toMillis(10), 10);
}
/**
* 設置請求超時時間
* 默認
* public Options() {
* this(10 * 1000, 60 * 1000);
* }
*/
@Bean
Request.Options feignOptions() {
return new Request.Options(60 * 1000, 60 * 1000);
}
/**
* 打印請求日志
* <p>
* NONE: 不記錄任何信息
* BASIE:僅記錄請求方法,URL以及響應狀態碼和執行時間
* HEADERS:除了記錄BASIE級別得信息之外,還會記錄請求和響應得頭信息
* FULL:記錄所有請求與響應得明細,包括頭信息,請求體,元數據等。
*
* @return
*/
@Bean
public feign.Logger.Level multipartLoggerLevel() {
return feign.Logger.Level.FULL;
}
}
- 注解指定配置文件
@FeignClient(name = "hopsonone-park-search", configuration = FeignConfig.class)