使用rxjava进行多个异步调用

时间:2019-09-21 21:51:59

标签: 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。

对于用户的一个给定请求,我调用A,B,C(可以顺序或并行),我想处理这些服务的所有响应,并知道何时从所有服务中获取数据。三。对我来说,我需要知道处理所有服务中的数据的完整状态。

还有如何处置订户

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

0 个答案:

没有答案