2017-05-18 14 views
0

Hystrixを使用して、非同期の戻り値を持たないメソッドをどのように実行するのだろうか。次の例を参照してください。Hystrixを使ったvoidメソッドの非同期実行

@Service 
public class TestService { 

    @HystrixCommand 
    public void test() { 
     // some code ... 
    } 
} 

私はtest()メソッドを複数回呼び出す(火と忘れて)したいとコマンドは非同期に実行されなければなりません。このメソッドは何も返しません。どうやってやるの?

EDIT 1

ので、何があなたを停止しています。返り値がなくてもhystrixがサポートするメソッドを実行できます。

このメソッドは、一度に複数回呼び出されます。呼び出し元は、メソッドが再度呼び出される前に実行が終了するまで待つ必要はありません。

あなたはこのように使用することができます
+0

@HystrixCommand public Future<Object> test() { return new AsyncResult<Object>() { @Override public Object invoke() { // your code here doSomething(); // just return null return null; } }; } 

を参照してください:あなたは、注釈なしで使用することができますhttps://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica#asynchronous-execution

または、:

new HystrixCommand<Object>(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")) { @Override protected Object run() throws Exception { doSomething(); return null; } }.queue(); 

見ます。 hystrixが返すメソッドは、戻り値がない場合でも実行できます – pvpkiran

答えて

関連する問題