我想知道如何使用Hystrix执行没有返回值异步的方法。请参阅以下示例。
@Service
public class TestService {
@HystrixCommand
public void test() {
// some code ...
}
}
我想多次调用test()
方法(触发并忘记),并且该命令应该异步执行。该方法不会返回任何内容。我怎么能这样做?
编辑1
所以阻止你的是什么。您可以执行由hystrix支持的方法,即使它没有返回值
一次调用此方法多次。我不希望调用者必须等到执行完成后再重新调用该方法。
答案 0 :(得分:0)
你可以像这样使用:
@HystrixCommand
public Future<Object> test() {
return new AsyncResult<Object>() {
@Override
public Object invoke() {
// your code here
doSomething();
// just return null
return null;
}
};
}
或者,您可以在没有注释的情况下使用:
new HystrixCommand<Object>(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")) {
@Override
protected Object run() throws Exception {
doSomething();
return null;
}
}.queue();
请参阅:https://github.com/Netflix/Hystrix/wiki/How-To-Use#asynchronous-execution