WebFlux 之 Flux 和 Mono 常用方法总结

最近发现越来越多的网友再使用 WebFlux,本文介绍几个 Flux 和 Mono 常用的方法。

在 Reactor 中,数据流发布者(Publisher)由 Flux 和 Mono 两个类表示,它们都提供了丰富的操作符(operator)。一个 Flux 对象代表一个包含0个或多个(0..N)元素的响应式序列,而一个 Mono 对象代表一个包含0或一个(0..1)元素的结果。这是它们两者之间最大的区别。

它们也有一些相同的方法用于构建数据流,下面简单列举几例。

用 just 创建数据流

Flux.just(520, 996, 997, 1024, 250, 888);
Mono.just(996);

基于数组创建数据流

Integer[] array = new Integer[]{520, 996, 997, 1024, 250, 888};
Flux.fromArray(array);

基于集合创建数据流

Integer[] array = new Integer[]{520, 996, 997, 1024, 250, 888};
List<Integer> list = Arrays.asList(array);
Flux.fromIterable(list);

基于 Stream 创建数据流

Integer[] array = new Integer[]{1, 2, 3, 4, 5, 6};
List<Integer> list = Arrays.asList(array);
Stream<Integer> stream = list.stream();
Flux.fromStream(stream);

Flux 和 Mono 的数据信号

Flux 和 Mono 都可以发出三种数据信号,上文中提到元素值、错误信号和完成信号三者并不是要完全具备的,下面就给出几种情况:

// 只有完成信号的空数据流
Flux.just();
Flux.empty();
Mono.empty();
Mono.justOrEmpty(Optional.empty());

// 只有错误信号的数据流
Flux.error(new Exception("some error"));
Mono.error(new Exception("some error")); 

Flux 的一些特性导致它在封装一些自定义消息体的时候比较困难!

WebFlux 之 Flux 和 Mono 常用方法总结

: » WebFlux 之 Flux 和 Mono 常用方法总结

原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/252198.html

(0)
上一篇 2022年5月4日
下一篇 2022年5月4日

相关推荐

发表回复

登录后才能评论