6

我正在使用 Spring-Cloud-netflix 库。

我想知道是否有一种方法可以获取此代码并添加配置它而不是立即执行回退方法以重试执行N次,并且在N次的情况下执行回退方法:

 @HystrixCommand(fallbackMethod = "defaultInvokcation")
    public String getRemoteBro(String name) {
        return(executeRemoteService(name));
    }

     private String defaultInvokcation(String name) {
   return "something";
}

谢谢,雷。

4

1 回答 1

3

从我的评论

在您的代码中处理此行为。知道你的“特殊”业务逻辑不是 hystrix 的工作。举个例子

private final static int MAX_RETRIES = 5;

@HystrixCommand(fallbackMethod = "defaultInvokcation")
public String getRemoteBro(String name) {
    return(executeRemoteService(name));
}

private String executeRemoteService(String serviceName) {
    for (int i = 0; i < MAX_RETRIES; i++) {
        try {
            return reallyExecuteRemoteService(serviceName);
        } catch (ServiceException se) { 
          // handle or log execption
        }
    }
    throw new RuntimeException("bam");
}

不知道您是否更喜欢在循环中使用异常;)您还可以reallyExecuteRemoteService使用状态代码将您的答案包装在某种 ServiceReturnMessage 中。

于 2015-05-27T14:09:17.850 回答