Методы публикации Reactor Flux - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужно объяснение этих двух методов из проекта Reactor

docs-link

  • publish ()

Подготовьте ConnectableFlux, который разделяет эту последовательность Flux и отправляет значения подписчикам с учетом противодавления.

ConnectableFlux<T> publish()

И

  • publish (int prefetch)

Подготовьте ConnectableFlux, который разделяет эту последовательность Flux и отправляет значения подписчикам с учетом противодавления.

ConnectableFlux<T>  publish(int prefetch)

Мраморные диаграммы одинаковы дляи то и другое.Для чего нужен параметр int prefetch

Я запускаю эти примеры, и результаты совпадают

public static void publish() throws InterruptedException {
    Flux fl = Flux.just(1, 2, 3, 4, 5, 6)
            .delayElements(Duration.ofSeconds(1))
            .publish()
            .autoConnect();
    fl.subscribe(printing);
    Thread.sleep(4000);
    fl.subscribe(printing);
}

public static void publishWithPrefetch() throws InterruptedException {
    Flux fl = Flux.just(1, 2, 3, 4, 5, 6)
            .delayElements(Duration.ofSeconds(1))
            .publish(2)
            .autoConnect();
    fl.subscribe(printing);
    Thread.sleep(4000);
    fl.subscribe(printing);
}

1 Ответ

0 голосов
/ 21 ноября 2018

Обе ваши ссылки на документацию - одна и та же цель.

Предварительная выборка позволяет получить больше результатов одновременно, что позволяет выполнять некоторую буферизацию при управлении результатом.В любом случае, в конце вы все равно получите те же результаты;это больше вопрос эффективности / производительности, чтобы использовать тот или иной метод.

...