gpt4 book ai didi

aop - Hystrix 命令不在 Hystrix 环境中运行

转载 作者:行者123 更新时间:2023-12-01 00:21:10 29 4
gpt4 key购买 nike

我的 Hystrix 命令有问题。如果对 hystrix 包装方法的调用来自类内部,则 hystrix 包装方法不会在 Hystrix 环境中运行

在这种情况下,我将日志视为

05-02-2018 22:51:25.809 [http-nio-auto-1-exec-3] INFO  c.i.q.v.e.ConnectorImpl.populateFIDSchema -
populating FID Schema

但是,如果我从类外部调用相同的方法,我会看到它在 Hystrix 环境中运行
 05-02-2018 22:54:53.735 [hystrix-ConnectorImpl-1] INFO  c.i.q.v.e.ConnectorImpl.populateFIDSchema -
populating FID Schema

我像这样用 HystrixCommand 包装我的方法
 @HystrixCommand(commandKey = "getSchemaCommand", fallbackMethod = "getSchemaCommandFallback")

有任何想法吗?

最佳答案

与@pvpkiran 的回答相反,这不是 AspectJ 的限制,而是 Spring AOP 的限制。 Spring AOP 是一种尝试通过代理实现 AspectJ 子集的解决方案,基于代理的方法是导致未通过代理进行调用时不会调用通知的原因。

Spring AOP capabilities and goalsAOP Proxies在 Spring Framework Reference 中了解更多详细信息。

另一方面,AspectJ 直接修改被通知类的字节码,完全不涉及代理,并且不受基于代理的 Spring AOP 的限制。

AspectJ 在几乎所有方面都优于 Spring AOP,因此我建议您从 Spring AOP 切换到 AspectJ(您不需要为此放弃 Spring,因为 Spring 和 AspectJ 可以很好地协同工作)。

关于aop - Hystrix 命令不在 Hystrix 环境中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48628164/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com