RXJava Scheduler和异步回调api

时间:2015-12-08 22:26:49

标签: multithreading asynchronous rx-java

在我们的项目中,我们使用RXJava和CXF异步(2个Rest服务+ 1个Soap服务)和Mongodb异步驱动程序。

        public Observable<MyReturn> itineraries(MyQuery query) {

            return Observable.create((Observable.OnSubscribe<MyReturn>) subscriber -> {
                WebClient webclient = WebClient.fromClient(clientPrototype(), true);

                String myQuery = "" ;

                webclient.path("myPath",....);

                webclient.get(new InvocationCallback<MyClass>() {

                    @Override
                    public void completed(MyClass response) {
                        MyReturn myReturn = buildResponse(response);

                        subscriber.onNext(myReturn);
                        subscriber.onCompleted();

                    }

                    @Override
                    public void failed(Throwable throwable) {
                        subscriber.onError(new MyError(throwable));
                    }
                });

            });

我有一个链式的observable,我的问题是我的代码是由CXF线程池执行的(我使用自定义线程池),所有其他链式可观察对象都在同一个callaback CXF线程中执行。所以我的处理从回调线程转到下一个回调线程。

我试过“observerOn”给出了我自己的线程池,但它不起作用,代码在回调线程中执行。

对于CXF,我可以通过我自己的游泳池,所以这是一个设计问题。但是使用mongodb,我无法通过我的线程池(我没有找到通过它的方法),即使我允许安全管理器的所有操作都被激活,我也会有一个随机的安全权限问题。

谢谢。

0 个答案:

没有答案