【发布时间】:2020-10-21 10:43:32
【问题描述】:
我的 SpringBoot 应用启用了 Hystrix,并为一些 Feign 客户端定义了回退,而为其余客户端未定义。
现在,我想为尚未定义回退的那些禁用 Hystrix。所以我按照[第 7.4 段]https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html 中列出的步骤,使用普通 Feign.Builder 创建一个单独的 Feign 配置。但是,添加新的 @Bean Feign.Builder 会在我不想要的所有 Feign 客户端上禁用我的 Hystrix 功能。如果我删除 @Bean Feign.Builder,Hystrix 后备会像往常一样在 myhystrixclient 中启动。 How to disable hystrix in one of multiple feign clients 这里的一个类似的 SO 问题仍然存在。我做错了什么?
public class MyFeignClientConfiguration {
@Bean
public FeignErrorDecoder feignErrorDecoder() {
return new FeignErrorDecoder();
}
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder();
}
}
我的 Feign 客户端如下所示:
@FeignClient(name = "myregularclient", configuration = MyFeignClientConfiguration.class)
public interface MyRegularClient {
//my APIs here
}
我的 Hystrix Feign 配置如下所示:
public class MyFeignClientHystrixConfiguration {
@Bean
public FeignErrorDecoder feignErrorDecoder() {
return new FeignErrorDecoder();
}
}
这是我的 Feign 客户端,其中实现了 Hystrix 回退
@FeignClient(name = "myhystrixclient", configuration = MyFeignClientHystrixConfiguration.class, fallback = MyFallbackService.class)
public interface MyHystrixClient {
//my APIs here
}
更新
添加我的 Application.java 以进一步查看组件扫描方面。
@ComponentScan(basePackages ="com.demo.xyz")
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,
MetricFilterAutoConfiguration.class,
MetricRepositoryAutoConfiguration.class})
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class MyApplication {
/** Start the app **/
}
【问题讨论】:
-
我在这里的帖子中也专门提到了这个问题。那里建议的解决方案对我不起作用。
-
您的 MyFeignClientConfiguration 是否使用 @Configuration 注解?
-
@stacker 我没有。我的两个配置类都没有注释。我已经用我的 Spring Boot 配置更新了这个问题,以防万一。
-
@VinodKumarRai 添加你的 pom 文件
标签: java spring-boot hystrix spring-cloud-feign