Пример использования Flux и Mono - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в мире Flux и Monos, и недавно, используя метод findAll(), я понял, что этот метод может возвращать частичные ответы, то есть через Flux, и мне нужно добавить block() если мне нужны все записи из CosmosDB.

Мне было интересно, каким может быть реальный вариант использования или цель наличия Flux с частичными записями?

1 Ответ

1 голос
/ 21 июня 2020

Вся идея реактивного программирования состоит в том, чтобы изменить метод обработки элементов с pull на pu. sh.

Это означает, что вы можете обрабатывать полученные элементы один за другим.

Представьте себе Ситуация, когда ваши товары прибывают с задержкой в ​​потоке 3 se c и временем обработки, в вашей заявке на полученный товар будет 2 se c. Если поток будет содержать около 20 элементов, вы ждете 60 сек c для всех данных (20 элементов), а затем вам нужно подождать еще 40 сек c для элементов, которые будут обработаны.

С реактивным подход, вы можете использовать их один за другим, и в результате ваша обработка будет завершена через 60 секунд c.

Примером жизни для частичной обработки результатов может быть какой-то API, который имеет ограничения - может возвращать максимум 2000 записи (Salesforce - это платформа с этим ограничением). Так что, если вы хотите получить все эти записи - например. 50 000 - нужно 25 раз вызвать rest API. У этой службы может быть задержка в сети + время запроса, поэтому было бы полезно обработать ее частично.

ВАЖНО!

block() - неправильный способ работы с Reactor API

см .: Как получить String из Mono в реактивном java

...