在工商局网站如果做注销公告,114网址大全,产品做推广都有那些网站,国家工商企业查询系统Reactor核心组件 Flux和Mono组件#xff08;1#xff09;Flux组件#xff08;2#xff09;Mono组件 Flux和Mono组件
Reactor 框架提供了两个核心组件来发布数据#xff0c;分别是 Flux 和 Mono 组件。两者都是实现Publisher接口的高级抽象#xff0c;可以说是应用程序开… Reactor核心组件 Flux和Mono组件1Flux组件2Mono组件 Flux和Mono组件
Reactor 框架提供了两个核心组件来发布数据分别是 Flux 和 Mono 组件。两者都是实现Publisher接口的高级抽象可以说是应用程序开发过程中最基本的编程对象。二者都可以被onComplete信号或者onError信号所终止。
1Flux组件
表示0到N个元素的异步序列可以是有限的或无限的。
示例
创建Flux
import reactor.core.publisher.Flux;public class FluxExample {public static void main(String[] args) {// 从静态数据创建FluxString flux1 Flux.just(Hello, World);// 从集合创建FluxInteger flux2 Flux.fromIterable(Arrays.asList(1, 2, 3, 4, 5));// 生成动态数据FluxInteger flux3 Flux.range(1, 10);// 创建无限流FluxLong flux4 Flux.interval(Duration.ofSeconds(1));// 订阅Fluxflux1.subscribe(System.out::println);flux2.subscribe(System.out::println);flux3.subscribe(System.out::println);flux4.subscribe(System.out::println);}
}操作Flux
import reactor.core.publisher.Flux;public class FluxOperationsExample {public static void main(String[] args) {FluxInteger flux Flux.range(1, 10).filter(i - i % 2 0) // 过滤偶数.map(i - i * i) // 映射到平方.doOnNext(System.out::println); // 打印每个元素flux.subscribe();}
}2Mono组件
表示0到1个元素的异步序列通常用于处理单个结果或空结果的情况。
示例
创建Mono
import reactor.core.publisher.Mono;public class MonoExample {public static void main(String[] args) {// 从静态数据创建MonoString mono1 Mono.just(Hello, Mono);// 创建空的MonoMonoString mono2 Mono.empty();// 创建包含错误的MonoMonoString mono3 Mono.error(new RuntimeException(An error occurred));// 订阅Monomono1.subscribe(System.out::println);mono2.subscribe(System.out::println);mono3.subscribe(System.out::println, System.err::println);}
}操作Mono
import reactor.core.publisher.Mono;public class MonoOperationsExample {public static void main(String[] args) {MonoInteger mono Mono.just(10).map(i - i * 2) // 映射到双倍.doOnNext(System.out::println) // 打印元素.flatMap(i - Mono.just(i / 2)); // 扁平映射mono.subscribe();}
}某种程度上可以把 Mono 看作是 Flux 的一种特例而两者之间也可以进行相互的转换和融合。如果你有两个 Mono 对象那么把它们合并起来就能获取一个 Flux 对象。除此之外把一个 Flux 转换成 Mono 对象也有很多办法例如对一个 Flux 对象中所包含的元素进行计数操作就能得到一个 Mono 对象。
Flux和Mono对象的转换
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;public class ConversionExample {public static void main(String[] args) {// Mono转FluxMonoString mono Mono.just(Hello, World);FluxString fluxFromMono mono.flux();fluxFromMono.subscribe(System.out::println);// Flux转MonoFluxInteger flux Flux.just(1, 2, 3, 4, 5);MonoInteger monoFromFlux flux.next();monoFromFlux.subscribe(System.out::println);}
}