最近发现越来越多的网友再使用 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 常用方法总结
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/252198.html