несколько асинхронных вызовов с использованием rxjava - PullRequest
0 голосов
/ 22 сентября 2019

Как выполнить несколько асинхронных вызовов с помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...