spring-webflux - 从 Mono.fromCallable 返回 Mono.empty()

标签 spring-webflux project-reactor

我想做如下的事情。在 Mono.fromCallable 中,我运行一些 block 逻辑,然后根据值返回 Mono.empty() 或值,以便它触发映射或 defaultIfEmpty。

            Mono.fromCallable(() -> {
                double number = Math.random();
                if (number < 0.5) {
                    return Mono.empty();
                }

                return number;
            })
            .map(number -> 1)
            .defaultIfEmpty(0)

这给出了一个错误,因为 Mono.fromCallable 期望一个一致的返回值。如何调整代码以使其工作?

最佳答案

尽管在 Reactor API 中通常禁止返回 null,但 Callable 可能会返回一个有效值,Reactor 会通过转换为空 来正确处理它单声道:

Mono.fromCallable(() -> {
    double number = Math.random();
    if (number < 0.5) {
        return null;
    }

    return number;
})

关于spring-webflux - 从 Mono.fromCallable 返回 Mono.empty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63333541/

相关文章:

spring-boot - 如何使用 Spring Webflux 返回 GZIP 响应?

project-reactor - Flux.map 与 Flux.flatMap 的一对一操作

spring-data - 使用 spring webflux-reactor 进行嵌套数据访问调用

netty - 为 Netty 服务器上的 Spring Reactive Web 应用程序定义最大并发用户数

java - Spring Boot 集成测试抛出错误 "java.lang.IllegalStateException: Timeout on blocking read for 5000 MILLISECONDS"

java - 如何自定义SpringWebFlux WebClient xml+rss JAXB反序列化?

spring-webflux - spring webflux webfilter 去除请求体

spring - 如何记录 Spring WebClient 响应

java - 从项目 react 器中的通量中采样除第一个元素之外的所有元素

spring - 使用 spring 5 WebFlux 框架解码 ByteArray