Как выполнить несколько асинхронных вызовов с помощью 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