Flux Generator - Как обращаться, когда нет доступных данных? - PullRequest
0 голосов
/ 29 марта 2020

Вопрос: Как нам обращаться с Генератором потока , когда данных больше нет?

Я использую Flux API Project Reactor для опроса данных, которые поставить в Redis (По внешнему сервису). Это должен быть неопределенный опрос, пока служба не выйдет из строя / прекратится / остановится.

Я использую Flux Generator для извлечения данных из Redis. В некоторых случаях в Redis не будет данных в течение некоторого времени и, следовательно, Генератор не сможет вызывать onNext. Но я хочу возобновить, когда будут доступны данные в Redis.

Как мне справиться с этой ситуацией? Я вижу варианты ниже:

1) вызов onError с пользовательским исключением, утверждающим, что в данный момент нет доступных данных

2) вызов complete для подачи сигнала - В этом случае я Я периодически создаю экземпляр Flux, и то же самое будет завершено, когда не будет никаких данных.

1 Ответ

0 голосов
/ 31 марта 2020

Flux.generate - для функции генерирования данных, которая гарантированно всегда генерирует. Используйте либо Flux.create [1] (если прослушиватель Redis может получать уведомления из нескольких потоков), либо Flux.push [2] (если гарантированно получатель Redis будет получать уведомления из одного потока).

[ 1] https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#create - java .util.function.Consumer-

[2] https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#push - java .util.function.Consumer-

...