1

我成功配置spring-cloud(通过spring-cloud-starter-hystrix)来包装对服务的调用。

这一切都很好,如下所示:

@Component
public class MyService {

  @HystrixCommand(fallbackMethod = "fallback")
  public void longRunning() {
     // this could fail
  }

  public void fallback() {
    // fallback code
  }
}

我现在的问题是,我想记录一些关于执行错误的统计信息longRunning()

尝试HystrixRequestLog.getCurrentRequest()在回退方法中访问会抛出

java.lang.IllegalStateException:必须在每个请求开始时调用 HystrixRequestContext.initializeContext(),才能使用 RequestVariable 功能。

我正在寻找一种简单的方法来记录longRunning是否调用了回退的异常。

测试v1.0.0.RC2

4

2 回答 2

1

要查看堆栈跟踪,您只需启用 DEBUG 登录即可com.netflix.hystrix

据我所知,要使用HystrixRequestContext调用者MyService必须HystrixRequestContext.initializeContext()在使用服务之前调用。太烂了,所以如果有人有更好的主意,我很感兴趣。

于 2015-02-05T11:32:22.270 回答
1

从 Javanica v1.4.21 开始,它允许回退方法有一个 Throwable 类型的参数来访问命令执行异常,如下所示:

public void fallback(Throwable e) {
   // fallback code
   LOGGER.error(e.getMessage());
}

要获得此功能,您的构建配置需要覆盖 Spring Cloud 引入的旧版本的 Javanica。

于 2016-03-04T15:32:10.753 回答