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)
posted @ 2020-07-14 16:58  SweetBaby。  阅读(5608)  评论(0编辑  收藏  举报