Java基础、中级、高级、架构面试资料

WebFlux 之 Flux 和 Mono 常用方法总结

JAVA herman 5824浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

最近发现越来越多的网友再使用 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 的一些特性导致它在封装一些自定义消息体的时候比较困难!

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » WebFlux 之 Flux 和 Mono 常用方法总结