FeignClient调用超时处理方案

本文介绍了解决SpringCloud中FeignClient调用出现ReadTimeOut的问题,通过自定义配置类调整连接和读取超时时间,实现服务间调用的稳定性和效率提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现问题的前提

  • SpringCloud间FeignClient调用出现ReadTimeOut的情况
  • FeignClient服务间调用的默认超时时间为2秒
  • 网上查找的解决方案
    • 关闭Hystrix(馊主意)
    • 延长超时间(Spring众多超时时间配置繁多)
解决方案
  • 为FeignClient添加自定义的超时配置,结合Nacos可控
  • 话不多说,贴出源码
/**
 * FeignClient配置类
 *
 * @author gralves
 * @date 2020/8/10
 */
@Component
public class FeignClientConfig {

	// 连接超时
    @Value("${service.feign.connectTimeout:60000}")
    private int connectTimeout;
    
    // 数据读取超时
    @Value("${service.feign.readTimeOut:60000}")
    private int readTimeout;

	// 构造自定义配置类
    @Bean
    public Request.Options options() {
        return new Request.Options(connectTimeout, readTimeout);
    }
}
  • FeignClient使用自定义配置类
// configuration字段使用自定义配置
@FeignClient(value = "xxx", configuration = FeignClientConfig.class)
public interface XxxFeignClient {...
  • 启动服务A/B,进行服务调用,断点59秒(不超时),断点60秒(ReadTimeOut).可以发现配置是生效的
建议
  • 不同的服务可以配置不同的超时时间
  • FeignClient可以抽成公共工具包进行使用
缺点
  • 太麻烦,觉得调试配置麻烦的可以使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值