首页 > 其他分享 >feign设置超时时间

feign设置超时时间

时间:2024-03-20 18:14:58浏览次数:24  
标签:feign 设置 Request Options context 超时 class

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 {

}

标签:feign,设置,Request,Options,context,超时,class
From: https://www.cnblogs.com/expiator/p/18085786

相关文章

  • 使用AOP记录feign调用日志
    文章目录业务场景使用DemoClientFeignDemlFeignFallBack主要代码DockLogAspectDockLogDockLogServiceDockLogAddDTOJacksonUtils业务场景记录请求第三方接口的情况。@DockLog可以用在类上也可以用在方法上使用DemoClientFeignimportorg.springframework.cloud......
  • 如何在云服务器上设置固定时间执行任务
    目的最近写了一个获取当地天气然后发送邮件的js文件,然后需要手动node执行,刚好为了博客买了一个腾讯云服务器,想着放云服务器上,然后,每天自动执行发送给好友们实现首先在你的服务器上安装符合系统的node版本,默认路径应该是user/bin/node然后将你的文件夹上传到服务器上,腾讯云的......
  • Jmeter 之跨线程组传参(环境变量设置为全局变量)
    工作中往往会出现同一个测试计划下这个线程组下变量在另外一个线程组中使用,这就意味着需要把环境变量修改为全局变量 1.首先通过json提取器或者正则表达式的方式把数据提取出来 2.打开函数助手,选择setProperty函数, 生成函数${__setProperty(token,${access_token},)}3.......
  • css设置背景模糊周边有白色光晕,如何解决?
    <divclass="img-box"><img:src="xxx.png"><divclass="img-bg":style="{'background-image':`url(`+xxx.png+`)`}"></div></div>.img-box{width:1......
  • 利用ssh隧道提升 feign 调用开发效率
    问题描述springcloud架构下,微服务间很多是通过feign进行调用的。作为一家小公司,很多微服务在开发环境没有部署实例,这就导致,想在本地做开发调试,要花精力起很多依赖服务。耗时费力。解决办法1、利用ssh隧道,让办公网可以访问测试环境(阿里云、默认不开放端口)的微服务。ssh-f......
  • WPS打印文件如何自定义纸张和设置
    这两天遇到个需求,就是打印机平时都打印A4纸和内容财务使用的财务凭证纸是特殊的140*240mm的纸,打印时选择A5B5等纸张后打印机都无反应捣鼓了一个小时,终于弄明白了怎么操作1.新增自定义纸张打印界面执行:属性->纸张/质量->自定义->起好名字+设置长宽   2.第三方软件选......
  • 开机设置自动mount nfs的最简单方法
    开机设置自动mountnfs的最简单方法背景公司里面很多存储其实使用的是nfs.为了保证可用,想着能够通过开机启动等方式进行挂载.这里其实不太建议使用fstab的方式进行.如果nfsserver出现了问题,可能会导致启动虚拟机变的非常缓慢.所以想法还是通过计划任务的方式来实现......
  • Mybatis设置默认值
    在MyBatis中,可以通过在<resultMap>中使用<result>标签的column属性来设置默认值。但是,MyBatis本身不直接支持在<select>查询中设置默认值。如果需要为查询结果中的某个字段设置默认值,可以在结果映射中处理,或者在应用层面进行处理。以下是一个使用<resultMap>设置默认值的例......
  • MySQL8设置允许简单密码
    [https://blog.51cto.com/u_16175454/9981004#:~:text=MySQL8设置允许简单密码1登录MySQL数据库首先,使用root用户登录到MySQL数据库。mysql-u,5刷新权限在修改后,需要刷新权限使更改生效。...6验证设置最后,验证设置是否生效。](https://blog.51cto.com/u_16175454/99......
  • CxGrid的终极风格设置
    凡是使用Delphi的程序员,我敢说99%使用过CxGrid。众所周知,CxGrid的套件有自己的皮肤风格管理体系,你如果用其它第三方的皮肤控件来美化你的程序,一旦进入到CxGrid则头疼不已。哪怕你专门为某一种皮肤设计了适合CxGrid的Style,一旦换肤,前功尽弃。总不能控件有100种皮肤,你设计100......