我一直在玩 Netflix OSS Hystrix,现在我正在探索不同的配置和可能性,以将其包含在我的项目中。除其他外,我的应用程序需要在HystrixCommand.getFallBack()
...中进行网络调用
现在,我读到最好不要在那里进行网络调用,而是提供一些通用答案(请参阅Hystrix Wiki),如果确实有必要这样做,应该使用HystrixCommand
or HystrixObservableCommand
。
我的问题是,如果我使用我HystrixCommand
应该调用它,例如,使用HystrixCommand.run()
orHysrixCommand.queue()
或其他选项?
另外,在我的日志中,我注意到getFallBack()
可以有不同的调用线程(例如,Hystrix-Timer,我想这取决于谁中断了 run 方法)。在这里,我想知道HystrixCommand.run()
从后备中调用 shell 会如何影响我的性能,因为调用线程将处于活动状态并被阻塞,直到该命令完成?
编辑:以新的眼光看待这个问题,我现在认为“通用答案”(上面提到的)可能是某种形式的Promise
ie,CompletableFuture<T>
在 Java 术语中。因此,从 中返回承诺HystrixCommand.run()
将允许调用线程(Hystrix 内部)立即返回,从而释放它。但是现在我坚持实施这种行为。有任何想法吗?
非常感谢您的帮助!