我一直在玩Netflix OSS Hystrix,我正在探索不同的配置和可能性,以將其包含在我的項目中。除此之外,我的應用程序需要在HystrixCommand.getFallBack()
中執行網絡調用...Hystrix:在getFallBack中進行網絡調用()
現在,確實需要這樣做,應該使用HystrixCommand
或HystrixObservableCommand
。
我的問題是,如果我使用HystrixCommand
我應該調用它,例如,與HystrixCommand.run()
或HysrixCommand.queue()
或其他一些選項?
此外,在我的日誌中,我注意到getFallBack()
可以有不同的調用線程(例如,Hystrix-Timer,我猜這取決於誰中斷了運行方法)。在這裏,我想知道如何從fallback調用HystrixCommand.run()
影響我的性能,因爲調用線程將一直處於活動狀態並被阻塞,直到該命令結束爲止?
編輯:用這個問題的新眼光,我現在認爲「通用答案」(上面提到的)可以是某種形式的Promise
,即用Java術語的CompletableFuture<T>
。因此,返回HystrixCommand.run()
的承諾將允許調用線程(Hystrix內部)立即返回,從而釋放它。但是現在我堅持實施這種行爲。有任何想法嗎?
非常感謝您的幫助!