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 @   SweetBaby。  阅读(5664)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示