java - Reactor Flux 发布方法

标签 java reactive-programming project-reactor

我需要 Reactor 项目中这两种方法的解释

docs-link

  • 发布()

Prepare a ConnectableFlux which shares this Flux sequence and dispatches values to subscribers in a backpressure-aware manner.

ConnectableFlux<T> publish()

还有

  • 发布(int预取)

Prepare a ConnectableFlux which shares this Flux sequence and dispatches values to subscribers in a backpressure-aware manner.

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);
}

最佳答案

您的两个文档链接都是同一目标。

预取允许您一次获得更多结果,从而在管理结果时允许某种缓冲。 无论如何,最终你仍然会得到相同的结果;使用一种或另一种方法更多的是一个效率/性能问题。

关于java - Reactor Flux 发布方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53408598/

相关文章:

java - Spring Boot 2 和 Spring 5 容器混淆

javascript - 创建 Cycle.js 可重用模块

java - 如何在文件行出现时读取它们并将它们表示为 Flux?

java - 暂停 kafka 在响应式(Reactive) Kafka 中读取

java - 即使类已序列化,Blob 对象也无法正常工作

java - Android应用程序在ubuntu上运行有什么要求?

javascript - SwitchMap 和 PublishReplay 组合

spring - 如何在 Spring AMQP 中使用响应式(Reactive) RabbitListener Ack/Nack?

java - 为什么我的代码在输入负值时无法执行?

java - 从请求或响应 header 中隐藏 cookie