在我们的项目中,我们使用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,我无法通过我的线程池(我没有找到通过它的方法),即使我允许安全管理器的所有操作都被激活,我也会有一个随机的安全权限问题。
谢谢。