使用 Hystrix 异步执行 void 方法
Posted
技术标签:
【中文标题】使用 Hystrix 异步执行 void 方法【英文标题】:Async execution of void method with Hystrix 【发布时间】:2017-10-18 10:23:38 【问题描述】:我想知道如何使用 Hystrix 异步执行没有返回值的方法。请参阅以下示例。
@Service
public class TestService
@HystrixCommand
public void test()
// some code ...
我想多次调用test()
方法(即发即忘),并且该命令应该异步执行。该方法不返回任何内容。我该怎么做?
编辑 1
那么是什么阻止了你。你可以执行一个由 hystrix 支持的方法,即使它没有返回值
此方法一次调用多次。我不希望调用者必须等到执行完成才能再次调用该方法。
【问题讨论】:
那么是什么阻止了你。你可以执行一个由 hystrix 支持的方法,即使它没有返回值 【参考方案1】:你可以这样使用:
@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();
见:https://github.com/Netflix/Hystrix/wiki/How-To-Use#asynchronous-execution
【讨论】:
以上是关于使用 Hystrix 异步执行 void 方法的主要内容,如果未能解决你的问题,请参考以下文章
javanica中的Hystrix异步方法不在spring-boot java应用程序中运行