Tech.io의 'Reactive Programming with Reactor 3'을 공부하면서 정리하는 글입니다.
Mono
- 리액티브 스트림의
Publisher
구현체 - 단 하나의 요소만 내놓는다(=Emit)
- Mono 가 가능한 상태
- 하나의 값을 가지고 있는 상태 (complete with element)
- 빈 상태 (complete without element)
- 실패한 상태 (error)
Mono<Void>
타입은 완료 신호에만 관심이 있는 경우 사용- 연산자를 이용하여 '비동기 파이프라인'을 구성 가능 (
Publisher
를 상속한Reactor
의 특징)
마블 다이어그램
Mono 의 일반적인 마블 다이어그램
실제 예제 코드
Mono.just(1)
.map(integer -> "foo" + integer)
.or(Mono.delay(Duration.ofMillis(100)))
.subscribe(System.out::println);
연습
// TODO Return an empty Mono
Mono<String> emptyMono() {
return Mono.empty();
}
// TODO Return a Mono that never emits any signal
Mono<String> monoWithNoSignal() {
return Mono.never();
}
// TODO Return a Mono that contains a "foo" value
Mono<String> fooMono() {
return Mono.just("foo");
}
// TODO Create a Mono that emits an IllegalStateException
Mono<String> errorMono() {
return Mono.error(new IllegalStateException());
}