使用@HystrixCommand批注,可以配置一个后备方法,该方法应在方法失败时运行。

    public Link defaultDogeLink(Account account) {
         return null;
    }

    @HystrixCommand(fallbackMethod = "defaultDogeLink")
    public Link buildDogeLink(Account account) {
         // some code that may throw Runtime Exceptions
    }


为了记录(在中心类中)在@HystrixCommand注释的所有方法中引发的运行时异常,我该怎么办?

我正在使用spring-cloud-netflix,而不是香草hystrix-javanica。
我正在寻找需要在我的应用程序中实现的类似于org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler类(用于Spring的@Async)的东西。

在hystrix-core中,HystrixCommand类具有方法getFailedExecutionException(),该方法可在fallback方法内用于记录异常。有人可以指出我在使用hystrix-javanica时如何获取此异常吗?

最佳答案

我在hystrix-javanica的单元测试中找到了一种获取最后执行的hystrix命令的方法:

public Link defaultDogeLink(Account account) {
     LOG.warn("exception occured while building doge link for account " + account, getCommand().getFailedExecutionException());
     return null;
}

@HystrixCommand(fallbackMethod = "defaultDogeLink")
public Link buildDogeLink(Account account) {
     // some code that may throw Runtime Exceptions
}


private com.netflix.hystrix.HystrixInvokableInfo<?> getCommand() {
    return HystrixRequestLog.getCurrentRequest().getAllExecutedCommands().iterator().next();
}


它比预期的要冗长一些,但可以满足我的要求。

关于spring-cloud - 从hystrix命令记录错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31274174/

10-10 09:22