java - 如何在 Flux 上同时调用 subscribe 和 blockLast ?

标签 java project-reactor reactive-streams

我一直在尝试 Project Reactor 和 react 流。我在使用 subscribeOn 使流在不同线程上运行时遇到问题。将我的代码放在主线程中,我需要主线程 block 直到流完成,所以我做了这样的事情:

        Flux.just(1, 2, 3, 4)
                .log()
                .subscribeOn(Schedulers.parallel())
                .subscribe((i) -> {
                   // some operation 
                });

        try {
            Thread.sleep(20000L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Finished");

然后我注意到有一个 blockLast() 方法可以进行阻塞。但我无法同时使用 subscribe 和 blockLast,因为它们不返回 Flux。

有没有一种优雅的方式来做到这一点?

最佳答案

所有 block 方法都代表您进行订阅。您可以将在 subscribe lambda 中放入的代码移动到等效的 doOn* 方法中

关于java - 如何在 Flux 上同时调用 subscribe 和 blockLast ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52344276/

相关文章:

reactor - Reactor 会提供远程处理吗?

java - 从 Flux<Integer> 中分块读取

java - 文本文件不断删除文件上的内容。我该如何解决这个问题?

spring-webflux - Spring Reactor onErrorContinue 不工作

project-reactor - 存储先前映射结果的语法

mysql - Reactive Streams Specification 1.0 发布后,jdbc 规范是否也会响应式?

Spring Boot Webflux - 设置UTF-8编码

java - 如何使用gradle指定对tomcat库的依赖

java.lang.NoClassDefFoundError : Could not initialize class weblogic. wsee.jaxws.spi.WLSProvider

java.lang.NoClassDefFoundError : javafx/collections/MapChangeListener