@FeignClient注解自定义接口超时时间
问题描述
每个微服务都有统一的接口超时时间设定,但也存在一些特殊的业务场景,其接口需要较长的超时时间,比如:导出excel报表、上传文件、拉取业务报表数据等等。此时,默认的超时设置就不能满足需求,故需要设置各自的超时时间。
问题分析
使用@FeignClient 时,可以通过contextId属性为不同的接口设置不同的超时时间,在config属性中指定某服务的超时时间即可。
feign:
client:
config:
default: // 所有服务级别设置,default为任意服务,可以指定调用某服务时的超时时间
connectTimeout: 毫秒时间,建立连接的超时时间,一般只在发现服务时用到
readTimeout: 毫秒时间 ,建立连接,从服务端读取到可用数据的超时时间
remote-server-name: //contextId属性,指定调用remote-server-name服务时的超时时间
connectTimeout: 200
readTimeout: 3000
connectTimeout:单位毫秒,指定建立连接的超时时间,一般只在发现服务时用到。
readTimeout: 单位毫秒,建立连接后,从服务端读取到可用数据的超时时间。
设置超时时间时,需要注意以下两点:
♥只设置connectTimeout或者readTimeout时,配置不生效,两个值必须同时设置。
♥feign默认的connectTimeout时长是10s,readTimeout时长是60s,上面配置的值会覆盖默认值。
问题解决
把上述源码中的 remote-server-name
改为 remote-server-user
,则在如下调用中,就设置了调用 remote-server-user
服务时的超时时间:
@FeignClient(value = "user",contextId ="remote-server-user")
public interface UserFeignService {
@RequestMapping(value = { "/getUserById" })
User getUserById(@RequestParam("userId") final Long userId);
}
小结
工欲善其事,必先利其器。性能与效率是程序猿永恒的追求,对代码如此,对日常搬砖亦如此。Wiener只愿各位同仁Work Life Balance,效率高,错误少,回家早...
读后有收获,小礼物走一走,请作者喝咖啡。

作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南