春云openfeign 3.0.1回退未触发



我正在使用spring-cloud-starter-openfeign的3.0.1版本,我在后备实现方面遇到了问题。如果发生任何异常,它似乎不会被触发。

我配置了一个假客户端,用一个无效的主机作为url,以引发一个异常:

@FeignClient(name = "feignClientTest", url = "invalid.url", fallback = FeignClientTest.FallbackTest.class)
public interface FeignClientTest {
@RequestMapping(method = RequestMethod.GET, value = "/fake/url")
String getFromFakeUrl();
@Component
class FallbackTest implements FeignClientTest {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public String getFromFakeUrl() {
log.debug("Fallback occurred for getFromFakeUrl");
return "Fallback";
}
}
}

调用getFromFakeUrl()方法后,我得到一个java.net.UnknownHostException而不是"fallback";回退实现中使用的字符串。

设置假断路器。在应用程序配置文件中启用=true。

我应该配置什么吗?我错过什么了吗?

提前感谢。

我在将项目升级到Spring Cloud到2021版本列车后遇到了同样的问题,不再支持hystrix和spring-cloud-starter-netflix-hystrix

在春季文档中我发现了这个信息:

如果Spring Cloud CircuitBreaker在类路径上,则伪造电路断路器。启用= true,假装将所有方法断路器。

这意味着你必须满足两个要求:

  1. 启用属性:feign.circuitbreaker.enabled=true
  2. 添加Spring Cloud CircuitBreaker的依赖项,它将处理配置的回退。

在我的例子中,我已经切换到:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>

解决了这个问题。

最后我修复了添加依赖项的问题:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

最新更新