1. 程式人生 > 實用技巧 >FeignClient自定義配置

FeignClient自定義配置

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)