从Executer Service使用Java Observable进行休息服务

时间:2016-05-27 05:42:03

标签: java rest rx-java blocking nonblocking

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

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

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);

                }

            });

2 个答案:

答案 0 :(得分:1)

如果您有Callable,则可以使用fromCallable

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

答案 1 :(得分:0)

Observable.from(Future)是阻止操作,如文档中所述。您应该使用Observable.from(Future,Scheduler)代替。