本章内容给大家谈谈关于遇上spring cloud feign熔断配置的坑有哪些等问题,我们该怎么处理呢。下面这篇文章将为你提供一个解决思路,希望能帮你解决到相关问题。
Spring Cloud Feign熔断配置的坑
Spring Cloud Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。但是,如果不正确配置Feign,可能会遇到一些坑。下面就来详细介绍Spring Cloud Feign熔断配置的坑。
1. 服务调用超时
Spring Cloud Feign默认情况下,连接超时时间为1秒,读取超时时间为1秒,如果服务调用的时间超过1秒,则会抛出超时异常,此时可以通过配置Feign的连接超时时间和读取超时时间来解决。
@FeignClient(name = "xxx", configuration = MyFeignConfig.class)
public interface MyFeignClient {
//...
}
@Configuration
public class MyFeignConfig {
@Bean
public Request.Options options() {
return new Request.Options(5000, 10000);
}
}
2. 异常处理不友好
当Feign调用服务抛出异常时,Feign默认情况下会抛出FeignException异常,这样对于开发者来说不够友好,此时可以通过定义ErrorDecoder来处理异常,让Feign抛出更友好的异常信息:
@FeignClient(name = "xxx", configuration = MyFeignConfig.class)
public interface MyFeignClient {
//...
}
@Configuration
public class MyFeignConfig {
@Bean
public ErrorDecoder errorDecoder(){
return new MyErrorDecoder();
}
}
public class MyErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
// ...
}
}
3. Hystrix不可用
在Spring Cloud Feign中,默认情况下Hystrix是不可用的,如果要启用Hystrix,需要在FeignClient的配置类中添加@EnableHystrix注解:
@FeignClient(name = "xxx", configuration = MyFeignConfig.class)
public interface MyFeignClient {
//...
}
@Configuration
@EnableHystrix
public class MyFeignConfig {
// ...
}
4. 自定义Hystrix配置
Hystrix默认的配置可能不能满足实际的业务需求,此时可以通过定义HystrixCommandProperties来自定义Hystrix的配置:
@FeignClient(name = "xxx", configuration = MyFeignConfig.class)
public interface MyFeignClient {
//...
}
@Configuration
@EnableHystrix
public class MyFeignConfig {
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder().commandProperties(
HystrixCommandProperties.Setter()
.withExecutionTimeoutInMilliseconds(1000)
);
}
}
总结
以上就是为你整理的spring cloud feign熔断配置的坑有哪些全部内容,希望文章能够帮你解决相关问题,更多请关注本站相关栏目的其它相关文章!