跳到正文

学习如何创建 Mono 实例

2 分钟阅读 364 字 0 查看原文 →

学习如何创建 Mono 实例

Flux

描述

AMono<T>是一个响应式流 Publisher,还增强了许多可用于生成、转换、编排 Mono 序列的操作符。
它是最多 Flux 可以发出 1 个<T>元素的特例:Mono 要么有值(包含元素),要么为空(不包含元素),要么失败(错误)。
AMono<Void>可用于仅对完成信号感兴趣的情况(相当于 Reactive Streams 中的 Runnable 任务完成)。
与 类似 Flux,运算符可用于定义异步管道,该管道将为每个 重新实例化 Subscription
请注意,某些更改序列基数的 API 将返回一个Flux(反之亦然,将基数减少到 1 的 API 将 Flux 返回一个 Mono)。

请参阅此处的 javadoc
mono
Mono 实际操作:

Mono.firstWithValue(
        Mono.just(1).map(integer -> "foo" + integer),
        Mono.delay(Duration.ofMillis(100)).thenReturn("bar")
    )
    .subscribe(System.out::println);

实践

public class Part02Mono {
    //========================================================================================

    // TODO 返回一个空的Mono
    public Mono<@NonNull String> emptyMono() {
        return Mono.empty();
    }

//========================================================================================

    // TODO Return a Mono that never emits any signal
    public Mono<@NonNull String> monoWithNoSignal() {
        return Mono.never();
    }

//========================================================================================

    // TODO 返回一个包含“foo”值的Mono
    public Mono<@NonNull String> fooMono() {
        return Mono.just("foo");
    }

//========================================================================================

    // TODO 创建一个发出IllegalStateException的Mono
    public Mono<@NonNull String> errorMono() {
        return Mono.error(new IllegalStateException());
    }
}
public class MonoTest {
    @Test
    public void TestMono() {
        Part02Mono pt2 = new Part02Mono();
        pt2.emptyMono().subscribe(System.out::println);
        pt2.monoWithNoSignal().subscribe(System.out::println);
        pt2.fooMono().subscribe(System.out::println);
        pt2.errorMono().subscribe(System.out::println);
    }
}

原文:https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Mono

相关文章

学习如何创建 Flux 实例

学习如何创建 Flux 实例 描述 AFlux&lt;T&gt;是一个响应式流Publisher,它增强了许多操作符,可用于生成、转换、编排 Flux 序列。 它可以发出 0 到n 个 &lt;T&gt;元素(onNext事件),然后完成或出错(onComplete以及onError终止事件)。如果没有触发终止事件,则循环Flux将无限进行。 Flux 上的静态工厂允许创建源,或从多个回调类型生成...

StepVerifier-步骤验证器及其使用方法

StepVerifier 描述 到目前为止,你对每个练习的解答都是通过将 Publisher 你定义的答案传递给一个测试用例来检查的 StepVerifier。 该工件中的此类 reactor-test 能够订阅任何 Publisher (例如,Flux Akka Stream 或 A 流……),然后断言一组关于该序列的用户定义期望。 如果触发的任何事件与当前预期不符,则会 StepVerifie...

响应式编程简介

响应式编程入门 Reactor 3 是一个围绕该规范构建的库,将响应式编程Reactive Streams范式引入JVM。 在本课程中,你将熟悉 Reactor API。那么,让我们快速介绍一下响应式流和响应式编程中更通用的概念。 为什么 响应式编程是一种新的编程范式,它使用声明式代码(类似于函数式编程)来构建异步处理管道。它是一种基于事件的模型,数据一旦可用就会被推送给消费者:我们处理的是异步事...

bigroc 头像
bigroc

热爱技术的开发者,持续分享 Java、JavaScript、Go、Docker、AI 等领域的编程经验和技术思考。

评论

滚动到评论区域时再加载第三方评论脚本。