我正在使用 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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
调用 getFromFakeUrl() 方法后,我得到一个 java.net.UnknownHostException,而不是后备实现中使用的“Fallback”字符串。
我在应用程序配置文件中设置 feign.Circuitbreaker.enabled=true 。
我还应该配置什么吗?我错过了什么吗?
提前致谢。
ako*_*koz 10
将项目升级到 Spring Cloud 到 2021 版本列车后,我遇到了同样的问题,它不再支持 hystrix 等spring-cloud-starter-netflix-hystrix。
在 spring 文档中我找到了以下信息:
如果 Spring Cloud CircuitBreaker 位于类路径中并且 feign.CircuitBreaker.enabled=true,Feign 将使用断路器包装所有方法。
这意味着您必须满足两个要求:
feign.circuitbreaker.enabled=true就我而言,我已经切换到:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这解决了问题。
| 归档时间: |
|
| 查看次数: |
6746 次 |
| 最近记录: |