这可以通过定义ErrorDecoder
和手动控制Hystrix
断路器来实现。您可以检查异常的响应代码并提供您自己的回退。此外,如果您希望重试请求,请将您的异常包装并抛出RetryException
.
为了满足您的重试要求,还要Retryer
使用适当的配置注册一个 bean。请记住,使用 aRetryer
将在持续时间内占用一个线程。的默认实现Retryer
也使用指数退避策略。
这是从OpenFeign
文档中获取的示例 ErrorDecoder:
public class StashErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
if (response.status() >= 400 && response.status() <= 499) {
return new StashClientException(
response.status(),
response.reason()
);
}
if (response.status() >= 500 && response.status() <= 599) {
return new StashServerException(
response.status(),
response.reason()
);
}
return errorStatus(methodKey, response);
}
}
在您的情况下,您会419
根据需要做出反应。
您可以在运行时强制打开断路器设置此属性
hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen
ConfigurationManager.getConfigInstance()
.setProperty(
"hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen", true);
替换HystrixCommandKey
为您自己的命令。您需要在所需时间后将此断路器恢复为闭合状态。