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

作者:xqnode 时间:2023-07-01 19:16:32 

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


/**
* 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包引入即可,

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

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

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

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客户端设置超时时间操作

来源:https://blog.csdn.net/xqnode/article/details/89847687

标签:feign,客户端,超时
0
投稿

猜你喜欢

  • Android Studio 报错failed to create jvm error code -4的解决方法

    2023-01-22 03:13:49
  • java 中堆内存和栈内存理解

    2023-04-23 19:24:05
  • 基于Lucene的Java搜索服务器Elasticsearch安装使用教程

    2022-05-31 05:05:10
  • WinForm绘制圆角的方法

    2023-06-21 14:23:51
  • C#实现Datatable排序的方法

    2022-12-30 11:31:52
  • java 数据结构之删除链表中的元素实例代码

    2022-03-28 00:51:11
  • c# WPF中的TreeView使用详解

    2021-05-24 15:17:58
  • Android SharePreferences与数据库SQLite存储实现方法介绍

    2023-03-13 11:20:45
  • java使用hadoop实现关联商品统计

    2022-11-05 05:55:43
  • Android 实现视频字幕Subtitle和横竖屏切换示例

    2023-02-06 07:29:37
  • C#实现的鼠标钩子

    2021-10-29 22:48:29
  • Java金额大小写的转换方法

    2023-08-23 00:26:11
  • 使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)

    2023-04-24 07:35:45
  • spring-boot-maven-plugin:打包时排除provided依赖问题

    2023-07-18 02:12:11
  • WinForm调用jar包的方法分析

    2023-11-17 04:09:46
  • Android仿IOS ViewPager滑动进度条

    2022-10-31 08:27:38
  • Java中包装类和Arrays类的详细介绍

    2023-12-03 22:04:13
  • Android系统音量条实例代码

    2022-05-26 15:20:48
  • C# 实现颜色的梯度渐变案例

    2023-11-20 22:01:06
  • spring mvc4中相关注解的详细讲解教程

    2021-10-11 23:21:17
  • asp之家 软件编程 m.aspxhome.com