rxjava2: объединение наблюдаемых для разбитых на страницы обращений к БД - PullRequest
0 голосов
/ 11 января 2020

У меня есть метод, который выполняет постраничный вызов базы данных для сбора данных и возврата наблюдаемой.

public Observable search(string query, int limit, int offset)

Я хочу создать метод, который выполняет все постраничные поисковые запросы, чтобы загрузить все страницы для моего запросить и вернуть Completable. В этом методе я хотел бы объединить все страницы в одном потоке, выполнить реактивные преобразования и действия и вернуть завершаемый.

Однако, поскольку мне приходится иметь дело с огромным количеством данных, я не хочу загружать на всех страницах одновременно, поместите огромное количество данных в память и залейте мой реактивный поток большим количеством данных, потому что мой подписчик обрабатывает данные медленнее, чем издатель.

Итак, я хотел бы обработать первую страницу данных, затем загрузите другую страницу с помощью метода поиска, обработайте ее и продолжайте, пока я не обработаю последнюю страницу.

Поскольку я нахожусь в реактивном потоке, я не уверен, что было бы неплохо написать al oop для: выборки данных, подписки на поток, который будет преобразовывать и обрабатывать данные.

Мой подход заключается в объединении всех страниц в одном потоке (с использованием метода, такого как Observable.concat), а затем в обработке потока. Однако я не хочу загружать огромное количество данных в память и получать исключение outOfMemoryException.

Должен ли я использовать Flowable и использовать противодавление в такой ситуации?

Каков наилучший способ сделать это с rxjava2?

...