Reactor 3 是一个围绕该规范构建的库,将响应式编程Reactive Streams范式引入JVM。
在本课程中,你将熟悉 Reactor API。那么,让我们快速介绍一下响应式流和响应式编程中更通用的概念。
package com.qinrenjihe;import org.jspecify.annotations.NonNull;
import reactor.core.publisher.Flux;public class Main {// 创建一个空的 Fluxstatic Flux<@NonNull String> emptyFlux() {return Flux.empty();}// 返回一个包含2个值“foo”和“bar”的Flux,而不使用数组或集合static Flux<@NonNull String> fooBarFluxFromValues() {return Flux.just("foo", "bar");}// fooBarFluxFromList 从包含两个值“foo”和“bar”的列表中创建一个Fluxstatic Flux<@NonNull String> fooBarFluxFromList() {return Flux.fromIterable(java.util.Arrays.asList("foo", "bar"));}// errorFlux 创建一个发出IllegalStateException的Fluxstatic Flux<@NonNull String> errorFlux() {return Flux.error(new IllegalStateException("Something went wrong"));}// 创建一个通量,每100ms发出从0到9的递增值static Flux<@NonNull Long> counter() {return Flux.interval(java.time.Duration.ofMillis(100)).take(10);}public static void main(String[] args) {// 1. 创建一个空的 FluxMain.emptyFlux().subscribe(System.out::println);// 2. 返回一个包含2个值“foo”和“bar”的Flux,而不使用数组或集合Main.fooBarFluxFromValues().subscribe(System.out::println);// 3. 从包含两个值“foo”和“bar”的列表中创建一个FluxMain.fooBarFluxFromList().subscribe(System.out::println);// 4. 创建一个发出 IllegalStateException 的 Flux// Main.errorFlux().subscribe(System.out::println,Throwable::printStackTrace);// 5. 创建一个通量,每100ms发出从0到9的递增值Long lastValue = Main.counter()//.doOnNext(System.out::println) // 在发出每个值时打印.doFinally(System.out::println) // 在完成时打印.blockLast(); // 等待完成System.out.println("Last value: " + lastValue);}
}
原文:https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Intro