Назад к вопросам
IT One
Senior
18
Как подписаться на Flux/Mono в реактивном программировании? Какие варианты существуют?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В реактивном программировании на Java с использованием Project Reactor для подписки на Flux или Mono существуют несколько вариантов:
- Метод subscribe() — базовый способ подписаться и обработать элементы, ошибки и завершение:
flux.subscribe(
value -> System.out.println("Получено: " + value),
error -> System.err.println("Ошибка: " + error),
() -> System.out.println("Завершено")
);
- Использование Consumer для обработки только значений:
mono.subscribe(value -> System.out.println("Результат: " + value));
- Подписка с Disposable:
Disposable disposable = flux.subscribe();
// Можно отменить подписку позже
disposable.dispose();
- Подписка с использованием операторов doOnNext, doOnError, doOnComplete для побочных эффектов:
flux
.doOnNext(value -> System.out.println("Получено: " + value))
.doOnError(error -> System.err.println("Ошибка: " + error))
.doOnComplete(() -> System.out.println("Завершено"))
.subscribe();
- Подписка с использованием Subscriber:
Можно реализовать интерфейс Subscriber для более тонкого контроля над подпиской, например, управление запросом элементов (backpressure).
flux.subscribe(new BaseSubscriber<>() {
@Override
protected void hookOnNext(T value) {
System.out.println("Получено: " + value);
request(1); // Запрашиваем следующий элемент
}
});
Таким образом, выбор способа подписки зависит от потребностей: простая обработка, управление жизненным циклом подписки или контроль над потоком данных.