feign设置超时时间

本文介绍了如何在SpringCloud应用中使用Feign进行HTTP请求时设置超时时间,包括通过FeignClientFactoryBean配置、FeignTimeoutConfiguration类以及FeignClient注解指定超时配置的方法和示例。
摘要由CSDN通过智能技术生成

引入依赖包

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.0.2.RELEASE</version>
</dependency>

feign设置超时时间

feign的 本质是 调用 http请求,如果不设置超时时间,请求长时间连接着,占用系统资源,影响用户体验。

feign设置超时时间,可以通过 Request.Options 来设置。

FeignClientFactoryBean :

调用 feign ,会调用 FeignClientFactoryBean 类的 feign() 方法,再用 configureFeign() 配置 feign 。

	protected Feign.Builder feign(FeignContext context) {
		FeignLoggerFactory loggerFactory = get(context, FeignLoggerFactory.class);
		Logger logger = loggerFactory.create(this.type);

		Feign.Builder builder = get(context, Feign.Builder.class)
				// required values
				.logger(logger)
				.encoder(get(context, Encoder.class))
				.decoder(get(context, Decoder.class))
				.contract(get(context, Contract.class));

		//配置 feign。
		configureFeign(context, builder);

		return builder;
	}

在 内部的 configureUsingConfiguration() 可以看到:

    // Request.Options 配置的超时时间,会在这里 添加到 feign配置中。
    Request.Options options = getOptional(context, Request.Options.class);
    if (options != null) {
    	builder.options(options);
    }

代码示例:

  • FeignTimeoutConfiguration 配置类:
@Configuration
public class FeignTimeoutConfiguration {
    @Value("${feign.connect.time:10000}")
    private int connectTimeout;

    @Value("${feign.read.time:5000}")
    private int readTimeout;

    @Bean
    public Request.Options options() {
        return new Request.Options(connectTimeout, readTimeout);
    }
}
  • FeignClient 注解 指定配置:
    在 configuration 属性中,指定配置为 以上设置的 FeignTimeoutConfiguration 即可。
@FeignClient(name = "myService", configuration = FeignTimeoutConfiguration.class)
@RequestMapping("/myService")
public interface MyFeignService {

}
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值