Mono 和 Flux 是 Project Reactor 中的两个核心类,用于处理异步数据流。Mono 表示一个单一的数据元素,而 Flux 表示多个数据元素的流。
map
是一个操作符,用于对数据流中的每个元素进行转换。它接受一个函数作为参数,这个函数会被应用到每个元素上,生成一个新的元素。
Flux<Integer> flux = Flux.just(1, 2, 3);
Flux<String> mappedFlux = flux.map(i -> "Value: " + i);
在这个例子中,map
将每个整数转换为字符串。
subscribe
是一个终端操作,用于启动数据流的消费过程。它接受一个或多个订阅者(Subscriber),这些订阅者会处理数据流中的元素。
Flux<Integer> flux = Flux.just(1, 2, 3);
flux.subscribe(
i -> System.out.println("Received: " + i),
err -> System.err.println("Error: " + err),
() -> System.out.println("Done")
);
在这个例子中,subscribe
启动了数据流的处理,并定义了如何处理每个元素、错误和完成事件。
Flux
或 Mono
,表示转换后的数据流。filter
、flatMap
)链式调用,形成复杂的数据处理流程。map
。subscribe
。import reactor.core.publisher.Flux;
public class MapVsSubscribeExample {
public static void main(String[] args) {
Flux<Integer> flux = Flux.just(1, 2, 3);
// 使用 map 进行转换
Flux<String> mappedFlux = flux.map(i -> "Value: " + i);
// 使用 subscribe 消费数据流
mappedFlux.subscribe(
s -> System.out.println("Received: " + s),
err -> System.err.println("Error: " + err),
() -> System.out.println("Done")
);
}
}
通过以上解释和示例代码,你应该能够理解 Mono 和 Flux 中 map 和 subscribe 的区别及其应用场景。
领取专属 10元无门槛券
手把手带您无忧上云