没有回退方法的@HystrixCommand注释有什么用?

时间:2018-04-13 00:44:39

标签: spring hystrix

我的项目中有以下代码

@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应用程序的一部分。

1 个答案:

答案 0 :(得分:2)

我相信在失败的情况下返回默认响应不仅是hystrix功能之一。

  

停止级联故障。后退和优雅的退化。失败快   并迅速恢复。

1)如果你不覆盖getFallback方法,将使用默认实现:

  protected R getFallback() {
        throw new UnsupportedOperationException("No fallback available.");
    }

尽管没有返回优雅响应(仅抛出异常)circuit breaker pattern并且失败快速原则仍然有效。

2)在后备方法中,您通常会返回空对象或集合。在某些情况下,如果您不想在发生故障时返回空对象,但您希望显示您的服务不起作用并返回一些5xx http状态代码和相应的消息。