Spring cloud Hystrix正在回退中访问当前执行状态
我成功地配置了Spring cloud Hystrix正在回退中访问当前执行状态,spring-cloud,hystrix,Spring Cloud,Hystrix,我成功地配置了springcloud(通过springcloudstarterhystrix)来包装对服务的调用 这一切都很好,如下所示: @组件 公共类MyService{ @HystrixCommand(fallbackMethod=“fallback”) 公营机构{ //这可能会失败 } 公共无效回退(){ //回退代码 } } 我现在的问题是,我想在longlunning() 尝试在回退方法中访问HystrixRequestLog.getCurrentRequest(),将抛出 jav
springcloud
(通过springcloudstarterhystrix
)来包装对服务的调用
这一切都很好,如下所示:
@组件
公共类MyService{
@HystrixCommand(fallbackMethod=“fallback”)
公营机构{
//这可能会失败
}
公共无效回退(){
//回退代码
}
}
我现在的问题是,我想在longlunning()
尝试在回退方法中访问HystrixRequestLog.getCurrentRequest(),将抛出
java.lang.IllegalStateException:HystrixRequestContext.initializeContext()必须在每个请求的开头调用,然后才能使用RequestVariable功能
我正在寻找一种简单的方法来记录调用回退时长时间运行的异常
使用
v1.0.0.RC2进行测试要查看堆栈跟踪,只需在com.netflix.hystrix
中启用调试日志即可
据我所知,要使用HystrixRequestContext
,MyService
的调用者必须在使用服务之前调用HystrixRequestContext.initializeContext()
。这很糟糕,所以如果有人有更好的想法,我很感兴趣。从Javanica v1.4.21开始,它允许回退方法有一个Throwable类型的参数来访问命令执行异常,如下所示:
public void fallback(Throwable e) {
// fallback code
LOGGER.error(e.getMessage());
}
要获得此功能,您的构建配置需要覆盖Spring Cloud引入的旧版本Javanica。您是否尝试在com.netflix.hystrix
中启用调试日志记录?添加日志记录成功了-现在报告了longRunning的完整堆栈跟踪-谢谢对我来说也有点麻烦,如果有更好的方法记录错误,以便更容易发现生产中的错误,那将是一件有趣的事情。。。