1

私は Netflix OSS Hystrix をいじっており、現在、プロジェクトに含めるさまざまな構成と可能性を探っています。とりわけ、私のアプリケーションはネットワーク呼び出しを行う必要がありますHystrixCommand.getFallBack()...

ここで、そこでネットワーク呼び出しを行わず、代わりに一般的な回答を提供するのがベスト プラクティスであることを読みました ( Hystrix Wikiを参照)。本当にこれを行う必要がある場合は、HystrixCommandまたはを使用する必要がありますHystrixObservableCommand

私の質問は、使用する場合、またはその他のオプションを使用してHystrixCommand呼び出す必要があるかどうかです。HystrixCommand.run()HysrixCommand.queue()

また、私のログでは、getFallBack()異なる呼び出しスレッドを持つことができることに気付きました (たとえば、Hystrix-Timer、これは実行メソッドを中断した人に依存すると思います)。ここで、フォールバックからのシェル呼び出しがパフォーマンスにどのようにHystrixCommand.run()影響するかを知りたいのですが、呼び出し元のスレッドは生きていて、そのコマンドが終了するまでブロックされますか?

編集:問題に新鮮な目で、私は今、「一般的な答え」(上記)が何らかの形、PromiseつまりCompletableFuture<T>Java用語である可能性があると考えています。したがって、 から promise を返すHystrixCommand.run()と、呼び出し元のスレッド (Hystrix 内部) がすぐに戻ることができるため、スレッドが解放されます。しかし今、私はこの動作の実装にこだわっています。何か案は?

助けてくれてありがとう!

4

1 に答える 1

0

HystrixCommand の execute メソッドを使用します。例:

@Override
protected YourReturnType getFallback() {
    return new MyHystrixFallbackCommand().execute();
}

非同期の「約束」を使用する場合は、おそらく HystrixObservableCommand を実装する必要があります。

于 2015-10-15T00:05:10.827 に答える