【问题标题】:Async execution of void method with Hystrix使用 Hystrix 异步执行 void 方法
【发布时间】:2017-10-18 10:23:38
【问题描述】:

我想知道如何使用 Hystrix 异步执行没有返回值的方法。请参阅以下示例。

@Service
public class TestService {

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

我想多次调用test() 方法(即发即忘),并且该命令应该异步执行。该方法不返回任何内容。我该怎么做?

编辑 1

那么是什么阻止了你。你可以执行一个由 hystrix 支持的方法,即使它没有返回值

此方法一次调用多次。我不希望调用者必须等到执行完成才能再次调用该方法。

【问题讨论】:

  • 那么是什么阻止了你。你可以执行一个由 hystrix 支持的方法,即使它没有返回值

标签: java spring asynchronous 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

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2023-03-24
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多