文章目录
java异步01——初识reactor
reactor介绍
Reactor是一个面向JVM(这意味着支持kotlin或者其他语言)的非阻塞响应式编程,具有高效的demand管理(以管理“背压”的形式)。它直接与Java 8功能(lambda、stream)集成在一起,特别是CompletableFuture,Stream和Duration。
Flux
Flux 是标准的Publisher,它表示0到N个发射项目的异步序列。会发出:OnNext,OnError,onComplete三种信号。
Mono
只发送一项的Pubilisher,有一些运算符可以返回Flux。
使用一个空的Mono <Void>表示无值异步过程。
简单看一下Flux和Mono的api
flux
Flux<String> seq1 = Flux.just("foo", "bar", "foobar");//直接赋值创建flux
List<String> iterable = Arrays.asList("foo", "bar", "foobar");
Flux<String> seq2 = Flux.fromIterable(iterable);//利用迭代器创建一个flux
Flux<Integer> numbersFromFiveToSeven = Flux.range(5, 3); //从5到7的flux,第二个参数表示产生的个数
mono
Mono<String> noData = Mono.empty(); //创建一个空mono
Mono<String> data = Mono.just("foo");//创建一个mono
订阅
只有订阅发生了,流才会开始
订阅接口有:
subscribe();
subscribe(Consumer<? super T> consumer);
subscribe(Consumer<? super T> consumer,
Consumer<? super Throwable> errorConsumer);
subscribe(Consumer<? super T> consumer,
Consumer<? super Throwable> errorConsumer,
Runnable completeConsumer);
subscribe(Consumer<? super T> consumer,
Consumer<? super Throwable> errorConsumer,
Runnable completeConsumer,
Consumer<? super Subscription> subscriptionConsumer);
也可以通过继承抽象类BaseSubscriber<