欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2021-06-20 08:48:06|栏目:JAVA代码|点击:

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

/**
 * 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

上一篇:Java下3中XML解析 DOM方式、SAX方式和StAX方式

栏    目:JAVA代码

下一篇:详解在Spring Boot中使用Mysql和JPA

本文标题:feign客户端设置超时时间操作

本文地址:http://www.codeinn.net/misctech/144863.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有