Flux
Mono
-
Mono.fromCallable
: https://kwonnam.pe.kr/wiki/reactive_programming/reactor -
flatMapMany()
: Mono를 Flux로 리턴
Examples
println("start")
val list: List<Mono<Int>> = listOf(
Mono.just(1),
Mono.just(2),
Mono.just(3),
Mono.just(4),
Mono.just(5),
Mono.just(6)
)
list.forEach { el ->
Thread.sleep(500)
println(el.block())
}
println("end")
result
start
1
2
3
4
5
6
end
Tip
|
Mono.error
Mono.error가 반횐되었을 떄
|
Error Handling
-
otherwiseReturn
: 3.0.7에서 deprecated 되었고,onErrorReturn
사용 권장
onErrorReturn
-
에러 발생하면 기본 값 사용
.onErrorReturn(-1)
onErrorResume
-
에러 발생하면 다른 시퀀스나 다른 에러로 변경
.onErrorResume { err ->
if (true) {
Flux.just(1, 2, 3)
} else {
Flux.error(errr)
}
}
onErrorMap
-
에러를 다른 에러로 변경하기
.onErrorMap(IllegalArgumentException(it))
onErrorContinue
-
스트림 처리 중 에러 발생 시 에러 발생 시키고 다음 스트림을 이어서 처리함.
onErrorStop
subscribe vs. subscribeOn
-
subscribe
는 현재 스레드에서 시작됨. -
subscribeOn
은 실행할 스레드를 지정함.
Note
|
Lettuce의
ReactiveRedisTemplate 사용시 비동기 처리Redis를 Lettuce 라이브러리 사용하여 |
Etc
-
마블 다이어그램: https://brunch.co.kr/@lonnie/20