我的项目中有以下代码
@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应用程序的一部分。
答案 0 :(得分:2)
我相信在失败的情况下返回默认响应不仅是hystrix功能之一。
停止级联故障。后退和优雅的退化。失败快 并迅速恢复。
1)如果你不覆盖getFallback
方法,将使用默认实现:
protected R getFallback() {
throw new UnsupportedOperationException("No fallback available.");
}
尽管没有返回优雅响应(仅抛出异常)circuit breaker pattern并且失败快速原则仍然有效。
2)在后备方法中,您通常会返回空对象或集合。在某些情况下,如果您不想在发生故障时返回空对象,但您希望显示您的服务不起作用并返回一些5xx http状态代码和相应的消息。