목록직장인공부 (32)
개발자는 기록이 답이다
spring webflux구조 Spring Webflux는 어떻게 구성되어 있을까? AutoConfiguration으로 알아보는 의존 그래프 AutoConfiguration : Spring webflux를 위해 필수적으로 제공되어야 하는 설정 먼저 WebFluxAutoConfiguration부터 살펴보자 ReactiveWebServerFactoryAutoConfiguration가 먼저 동작하고 나서 WebFluxAutoConrigufation이 동작한다 ReactiveWebServerFactoryAutoConfiguration을 들어가보면 tomcat, jetty, undertow, netty 4가지의 의존을 갖고 있는걸 볼 수 있다. Webflux는 이 4가지를 통해 서버가 제공된다는 것을 파악할 수 ..
content Q. Publisher와 연산자 사이에 어떻게 값들을 전달해야 할까? Java에서 Publisher와 연산자 사이에 값을 전달하려면 Reactive Streams 프로토콜을 따라야 한다. Reactive Streams는 비동기 및 이벤트 기반 애플리케이션을 위한 표준 인터페이스를 제공하는 스펙이다. 일반적으로 Publisher에서 생성한 데이터는 연산자를 통해 가공되고, 이후 Subscriber에게 전달된다. ThreadLocal 하나의 쓰레드에 값을 저장하고 해당 쓰레드 내에서 어디서든지 접근 가능 만약 subscribeOn, publishOn으로 실행 쓰레드가 달라진다면? ThreadLocal threadLocal = new ThreadLocal!(); threadLocal.set("w..
map, mapNotNull onNext이벤트를 받아서 값을 변경하고 변경된 값을 다시 Nesxt로 (아래로) 전달 mapNotNull은 변경된 값이 null인 경우 필터 해당된 반환된 값 중 Null이 아닌 것만 넘겨주는 연산자 Map으로만했다면 에러가 발생할 수 있지만, Flux에서는 Publisher에서는 Null이라는 값을 onNext로 전달하는게 에러에 해당한다. 만약 연산자 내부에서 어쩔 수없이 Null을 반환하는 경우라면 mapNotNull을 사용하는게 좋다. Flux.range(1, 5) .map(value !-> value * 2) .doOnNext(value !-> { log.info("doOnNext: " + value); }) .subscribe(); Flux.range(1, 5) ..
에러의 전파 Reactive streams에서 onError 이벤트가 발생하면 더 이상 onNext, onComplete 이벤트를 생산하지 않고 종료 Reactor에서onError이벤트가발생하면onError이벤트를아래로전파 onError이벤트를처리하기위해 고정된값을반환하거나 publisher를반환하거나 onComplete이벤트로변경하거나 다른에러로변환하거나 에러 핸들링이 없는 경우 source나연산자에서에러가발생했지만따로 처리하지 않은 경우 기본적으로 onErrorDropped가 호출 onErrorDropped의기본구현은에러를출력 public static void onErrorDropped(Throwable e, Context context) { Consumer