如何调整feign客户端的超时时间设置?

2026-05-16 03:331阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计538个文字,预计阅读时间需要3分钟。

如何调整feign客户端的超时时间设置?

我这就帮您简化这段伪原创内容:

“少说废话,直接看代码吧!/* * feign调用客户端 * / @FeignClient(name=user, url=${user.url}, configuration=MyFeignDecoder.class) public interface UserClient { @GetMapping(/rest/user/get/detail/{id}) */}

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

/** * 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 接口) 专门打包出去给其他微服务消费

如何调整feign客户端的超时时间设置?

这样的话 其他需要调用的微服务只要把这个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客户端设置超时时间操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

本文共计538个文字,预计阅读时间需要3分钟。

如何调整feign客户端的超时时间设置?

我这就帮您简化这段伪原创内容:

“少说废话,直接看代码吧!/* * feign调用客户端 * / @FeignClient(name=user, url=${user.url}, configuration=MyFeignDecoder.class) public interface UserClient { @GetMapping(/rest/user/get/detail/{id}) */}

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

/** * 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 接口) 专门打包出去给其他微服务消费

如何调整feign客户端的超时时间设置?

这样的话 其他需要调用的微服务只要把这个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客户端设置超时时间操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。