Documents

Reactor with kotlin

Flux

Mono

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
Mono.error

Mono.error가 반횐되었을 떄 block() 호출하면 안에서 에러를 던짐(throw)

  • blockingGet 이 호출되고 내부적으로 error 필드가 있으므로 에러를 throw함

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

Etc