我当前所用的spring cloud 版本为Hoxton.SR9,从spring-cloud-2020.0.0 开始移除了诸多Netflix组件,这里只是为了更好的应用ribbon。
因为该版本openfeign内部整合了ribbon,故可以通过对ribbon的配置来达到更改openfeign的超时时间等。
spring-cloud-2020.0.0版本开始,这种配置即失效,可通过更改Request.Options,以达到ribbon这种效果。
全局配置
ribbon方式修改超时时间
#设置feign客户端超时时间(OpenFeign默认支持ribbon)
ribbon:
#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
ReadTimeout: 5000
#指的是建立连接后从服务器读取到可用资源所用的时间
ConnectTimeout: 5000
Request.Options方式修改超时时间
问题:if the request should follow 3xx redirections.
配置类方式
import feign.Request;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
* @author issavior
*/
@Configuration
public class FeignOptionsConfig {
/**
* 超时时间配置
*/
@Bean
public Request.Options options() {
return new Request.Options(5, TimeUnit.SECONDS,
5, TimeUnit.SECONDS, true);
}
配置文件方式
feign:
client:
config:
# 提供方的服务名
default:
#请求日志级别
loggerLevel: FULL
#设置为默认的契约(还原成原生注解)
# contract: feign.Contract.Default
# 连接超时时间,默认2s,设置单位为毫秒
connectTimeout: 5000
# 请求处理超时时间,默认5s,设置单位为毫秒。
readTimeout: 5000
局部配置
feign:
client:
config:
# 提供方的服务名
ossa-service-producer:
#请求日志级别
loggerLevel: FULL
#设置为默认的契约(还原成原生注解)
# contract: feign.Contract.Default
# 连接超时时间,默认2s,设置单位为毫秒
connectTimeout: 5000
# 请求处理超时时间,默认5s,设置单位为毫秒。
readTimeout: 5000
源码解析
相关源码梳理【我只截了几张源码图,我相信你们这些老粉都一定可以看懂 //狗头保命】
原文始发于微信公众号(步尔斯特):【微服务|OpenFeign】openfeign的超时时间
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48076.html