feign客户端设置超时时间操作

 更新时间:2020年09月30日 08:37:07   作者:xqnode  
这篇文章主要介绍了feign客户端设置超时时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

/**
 * feign调用客户端
 */
@FeignClient(name = "user", url = "${user.url}", configuration = MyFeignDecoder.class)
public interface UserClient {
	@GetMapping("/rest/user/get/detail/{loginName}")
 JSONObject getUserInfoByLoginName(@PathVariable(value = "loginName") String loginName);
}
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;

import com.iflytek.icourt.exception.UnloginErrorException;
import com.iflytek.icourt.secretary.constant.Constant;
import com.netflix.hystrix.exception.HystrixBadRequestException;

import feign.Request;
import feign.Response;
import feign.codec.Encoder;
import feign.jackson.JacksonEncoder;

/**
 * feign配置类
 */
@Configuration
public class MyFeignDecoder implements feign.codec.ErrorDecoder{
 public static Logger logger = LoggerFactory
   .getLogger(MyFeignDecoder.class);
 @Override
 public Exception decode(String methodKey, Response response) {
  logger.info("status:-------" + response.status());
  return feign.FeignException.errorStatus(methodKey, response);
 }
  
 @Bean
 @Primary
 @Scope("prototype")
 public Encoder jacksonEncoder () {
  return new JacksonEncoder();
 }
 
 @Bean
 Request.Options feignOptions() {
  return new Request.Options(2 * 1000, 120 * 1000);
 }
}

补充知识:feign调用问题\超时

1、项目结构 每个微服务是provider情况下有一个client模块(里面含有定义好的feignclient 接口) 专门打包出去给其他微服务消费

这样的话 其他需要调用的微服务只要把这个client jar包引入即可,

2、在其他微服务中 引入clientXX.jar 这时候有一个坑, 就是 @EnableFeignClients这个注解默认是只扫描项目启动application下的包 如果不同项目可能包路径不一致, 所以@EnableFeignClients得指定你的client.jar里面的路径 或者两个项目中 共同的顶级路径 例如com.XX.cloud 同一个公司内部 顶层包结构应该是一致的

3、feign调用超时 默认feign调用超时是1000毫秒的 有断点就肯定超时

需要加上以下配置

feign.hystrix.enabled=true
#feign调用默认是1000毫秒=1秒  应该设置成更长时间1000 * 60 * 5 = 5分钟 add by six-vision
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=300000
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=300000
hystrix.command.default.circuitBreaker.forceClosed=true
#hystrix.command.default.execution.timeout.enabled=false
#请求处理的超时时间 add by six-vision
ribbon.ReadTimeout=300000
ribbon.SocketTimeout=300000
#请求连接的超时时间 add by six-vision
ribbon.ConnectTimeout: 30000

以上这篇feign客户端设置超时时间操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决grails服务端口冲突的办法(grails修改端口号)

    解决grails服务端口冲突的办法(grails修改端口号)

    grails中默认的服务端口为8080,当本机中需要同时启动两个不同的项目时,就会造成端口冲突,下面给出解决方法
    2013-12-12
  • 一文详解如何通过Java实现SSL交互功能

    一文详解如何通过Java实现SSL交互功能

    这篇文章主要为大家详细介绍了如何通过Java实现SSL交互功能,文中的示例代码讲解详细,对我们的学习或工作有一定的帮助,需要的可以参考一下
    2023-04-04
  • Java调用echarts提供的地图压缩方法来压缩地图

    Java调用echarts提供的地图压缩方法来压缩地图

    今天小编就为大家分享一篇关于Java调用echarts提供的地图压缩方法来压缩地图,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java基础篇之反射机制详解

    Java基础篇之反射机制详解

    本文详细讲解了Java基础篇之反射机制,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • SpringBoot动态数据源连接测试的操作详解

    SpringBoot动态数据源连接测试的操作详解

    这篇文章主要介绍了SpringBoot动态数据源连接测试的操作步骤,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • 基于IO版的用户登录注册实例(Java)

    基于IO版的用户登录注册实例(Java)

    下面小编就为大家带来一篇基于IO版的用户登录注册实例(Java)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • J2SE基础之在Eclipse中运行hello world

    J2SE基础之在Eclipse中运行hello world

    本文的内容非常的简单,跟随世界潮流,第一个Java程序输出“Hell World!”。希望大家能够喜欢
    2016-05-05
  • 教你如何用Jenkins自动化部署项目(从零到搭建完成)

    教你如何用Jenkins自动化部署项目(从零到搭建完成)

    这篇文章主要介绍了教你如何用Jenkins自动化部署项目(从零到搭建完成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Springboot非分布式定时任务实现代码

    Springboot非分布式定时任务实现代码

    这篇文章主要介绍了Springboot非分布式定时任务实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • MyBatis-plus 模糊查询的使用

    MyBatis-plus 模糊查询的使用

    这篇文章主要介绍了MyBatis-plus 模糊查询的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论