小编gin*_*dex的帖子

如果创建热门发布者,flux cache()、replay() 和publish() 有什么区别?

cache()Flux和replay()ifpublish()创建热门发布者有什么区别?对于哪种用例,哪种运算符最适合?

以下示例使用 3 种不同的方法重播所有 5 个元素。

cache()

        var flux = Flux.fromStream(Stream.of(1,2,3,4,5))
                .delayElements(Duration.ofSeconds(1)).cache();

        flux.doOnNext(v -> System.out.println("First: " + v))
        .subscribe();

        Thread.sleep(5000);

        flux.doOnNext(v -> System.out.println("Second: " + v))
                .subscribe();

        Thread.sleep(10000);
Run Code Online (Sandbox Code Playgroud)

replay()

        var flux = Flux.fromStream(Stream.of(1,2,3,4,5))
                .delayElements(Duration.ofSeconds(1)).replay();

        flux.doOnNext(v -> System.out.println("First: " + v))
        .subscribe();

        Thread.sleep(5000);

        flux.doOnNext(v -> System.out.println("Second: " + v))
                .subscribe();

        flux.connect();

        Thread.sleep(10000);
Run Code Online (Sandbox Code Playgroud)

publish()

        var flux = Flux.fromStream(Stream.of(1,2,3,4,5))
                .delayElements(Duration.ofSeconds(1)).publish();

        flux.doOnNext(v -> System.out.println("First: " + v))
        .subscribe();

        Thread.sleep(5000);

        flux.doOnNext(v -> System.out.println("Second: " + v))
                .subscribe(); …
Run Code Online (Sandbox Code Playgroud)

project-reactor spring-webflux

1
推荐指数
1
解决办法
1799
查看次数

标签 统计

project-reactor ×1

spring-webflux ×1