【问题标题】:Rest Service with Java Observable from Executer Service使用来自 Executorservice 的 Java Observable 休息服务
【发布时间】:2016-05-27 05:42:02
【问题描述】:

我有一个返回 DeferredResults 的休息网络服务。我从返回 Future 的执行器服务中实现了 JavaRx Observable。我希望这个网络服务是非阻塞的,但它似乎阻塞了操作。

你认为我使用执行器服务的方式健康吗?

DeferredResult result = new DeferredResult();
    Observable<ResultEntity> observable = Observable
                    .from(executerService.submit(callable));
            observable.subscribe(new Subscriber<ResultEntity>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable throwable) {
                    result.setErrorResult(throwable.getMessage());
                }

                @Override
                public void onNext(ResultEntity r) {
                    result.setResult(t);

                }

            });

【问题讨论】:

  • 谢谢。我之前也使用过 CompatableFuture 来构建一个非阻塞服务并且它有效。但我想了解 RxJava 以及如何使用它创建非阻塞服务。这就是我问这个问题的原因。

标签: java rest rx-java blocking nonblocking


【解决方案1】:

如果你有Callable,你可以使用fromCallable

Observable.fromCallable(callable)
.subscribeOn(Schedulers.from(executorService))
.subscribe(...)

【讨论】:

    【解决方案2】:

    Observable.from(Future) 是阻塞操作,如文档中所述。你应该改用Observable.from(Future,Scheduler)

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多