block才会执行 mono_如何在Reactive Java中从Mono流获取字符串/对象?

1. 概述

在Reactor 系列视频中,我们学习了Mono。Mono是T对象的发布者。今天,我们要讲阻塞和非阻塞两种方式来获取Mono流里面的T对象

2. 阻塞方式

让我们从一个发布者Mono的例子开始。

在这里,只要发布者不再推送数据,我们就可以执行block方法获取Mono里面的值。

我们设置了一个时间让它更好的控制:

assertEquals(expected, result);

如果发布者没有在设定的持续时间内发出一个值,就会抛出一个RuntimeException。此外,Mono也可能是空的,block()方法将返回null。在这种情况下,我们可以使用blockOptional来代替。

assertEquals(Optional.empty(), result);

一般情况下,block违背了响应式编程的原则。在响应式应用中,不鼓励执行block方法。

接着我们来看非阻塞方式

3.非阻塞

首先,我们应该使用 subscribe()方法以非阻塞的方式进行订阅:

为了更好的呈现消费过程。可以使用以下方式:

blockingHelloWorld()

.doOnNext(result -> assertEquals(expected, result))

.subscribe();

4.  结论

这短文,我们写了两种方式获取Mono中的T值。强烈建议使用非阻塞方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值