使用rxjava的多个异步调用
如何使用Rxjava实现多个异步调用,其中每个调用都以块的形式获得响应 假设当用户发起请求时,我需要从一组异步服务中获取各种数据。 用户请求数据->我需要以异步方式调用服务A、服务B和服务C 这些服务中的每一个都是以一种方式定义的,对于给定的请求a->它们将以块的形式响应数据,比如A1、A2、A3和AF。类似地,服务B将响应B1、B2、BF,服务C将以块C1、C2、C3、C4、CF响应。 其中数字表示块,F表示最终响应。如果响应已发送所有请求信息的数据,则响应具有final标志 对于来自用户的一个给定请求,我调用A、B、C(可以是顺序的,也可以是并行的),我希望处理来自这些服务的所有响应,并知道我何时从这三个服务获得数据。对我来说,我需要知道处理来自所有服务的数据时的完整状态 还有如何处理订阅服务器使用rxjava的多个异步调用,java,asynchronous,parallel-processing,Java,Asynchronous,Parallel Processing,如何使用Rxjava实现多个异步调用,其中每个调用都以块的形式获得响应 假设当用户发起请求时,我需要从一组异步服务中获取各种数据。 用户请求数据->我需要以异步方式调用服务A、服务B和服务C 这些服务中的每一个都是以一种方式定义的,对于给定的请求a->它们将以块的形式响应数据,比如A1、A2、A3和AF。类似地,服务B将响应B1、B2、BF,服务C将以块C1、C2、C3、C4、CF响应。 其中数字表示块,F表示最终响应。如果响应已发送所有请求信息的数据,则响应具有final标志 对于来自用户的一
public void processUserRequest(){
Observable.fromIterable(listofservices)
.flatMap (service -> invokeAsyncService(service))
.subscribe( resp -> process response, error -> process
error , () -> done);
} //end processUserRequest
public Observable invokeAsyncService(){
PublishSubject subject = PublishSubject.create();
callService(request, subject); // internally in callService subject's onNext and onComplete are used for emitting responses from the service call.
return subject;
} //end invokeAsyncService
我创建了一个ParentObservable,它是每个服务调用的多个PublishSubject的可观察对象。PublishSubject的onNext和onComplete用于发布块事件和来自服务的最终响应。我有一个根可观测的订户。一切似乎都很好,但不确定它是否正确。可观察。fromIterable(服务列表)。flatMap(服务->调用同步服务(服务))。订阅(响应->流程响应,错误->流程错误,()->完成);public Observable invokeAsyncService(){PublishSubject subject=PublishSubject.create();callService(请求,主题);//在callService内部,我在传递的主题上使用onNext和onComplete从服务调用发出响应。返回主题;}