我的项目中有以下代码
@HystrixCommand(groupKey = "AddressRepository", commandKey =
"getAddressById", threadPoolKey = "addressSearchPool")
public List<Address> getAddressById(String id)
throws MyCustomException, HystrixRuntimeException {
try (Connection con = sql2o.open()) {
return // some logic....
} catch (Sql2oException e) {
throw new MyCustomException();
}
}
如您所见,@HystrixCommand 没有定义任何fallbackMethod。我想知道 HystrixCommand 在这里的目的是什么。
未定义后备时使用 HystrixCommand 的用例是什么?
代码是 Spring 应用程序的一部分。
最佳答案
我相信在失败时返回默认响应不仅仅是 hystrix 的功能之一。
Stop cascading failures. Fallbacks and graceful degradation. Fail fast and rapid recovery.
1) 如果您不重写 getFallback
方法,则将使用默认实现:
protected R getFallback() {
throw new UnsupportedOperationException("No fallback available.");
}
尽管事实上没有返回正常的响应(仅抛出异常)circuit breaker pattern快速失败原则仍然有效。
2) 在后备方法中,您通常会返回空对象或集合。在某些情况下,您可能不想在失败时返回空对象,但您想表明您的服务无法正常工作并返回一些 5xx http 状态代码和适当的消息。
关于spring - 如果没有后备方法,@HystrixCommand 注解有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807726/