목차
Spring WebFlux
Servlet과의 성능 차이
SpringBoot WebFlux Customize
Swagger 설정
APM
Routes
참고
Spring WebFlux
Spring 5 의 Non Blocking IO/Reactive Web Framework
Project Reactor
기반
Web on Reactive Stack
WebClient
SpringBoot Test
Servlet과의 성능 차이
Is Spring WebFlux a Myth?. Does it really outperform Spring… | by Gavin Fong | Aug, 2021 | Dev Genius
응답속도가 매우 좋은 환경에서는 servlet보다 느릴 경우도 존재할 수 있지만, 고 부하에 응답속도 편차가 큰 일반적인 환경에서는 WebFlux/non-blocking의 성능이 압도적으로 좋고 실패율도 낮다.
SpringBoot WebFlux Customize
WebFluxConfigurer
를 구현한다.
SpringBoot and JSON
에서
Java Jackson JSON Library
설정 확인
Swagger 설정
SpringFox
3.x 부터 webflux 지원.
spring-boot-starter-webflux swagger 3 설정
APM
NewRelic 이 spring webflux 지원
Scouter 2.5.0 부터 Spring Reactor 지원
Routes
라우터를 여러개 생성해도 자동으로 모두 모아서 설정해준다.
단, 각
라우터 Bean의 이름은 모두 달라야 한다.
참고
스프링캠프 2017 [Day1 A3] : Spring Web Flux - YouTube
스프링캠프 2017 [Day2 A1] : Reactive Spring ( Spring 5 & Reactor ) - YouTube
Mastering Spring framework 5, Part 2: Spring WebFlux | JavaWorld
all and sundry: Reactive Spring Webflux with AWS DynamoDB
Reactive Programming with Spring Boot
Guide to Spring WebFlux
Full Reactive Stack with Spring Boot WebFlux
Spring boot2로 Reactive Webflux API 만들기 1
@WebFluxTest
포함.
Build Reactive APIs with Spring WebFlux | Okta Developer
Spring Webflux with Kotlin | Baeldung
Spring 5 with Kotlin · hyper-cube.io
Spring Boot WebFlux + Server-sent events example – Mkyong.com
Handling Errors in Spring WebFlux | Baeldung
Spring Webflux and domain exceptions – SoftwareMill Tech Blog
Exception Handling in Spring Boot WebFlux Reactive REST Web Services - DZone Integration
Concurrency in Spring WebFlux | Baeldung
내가 만든 WebFlux가 느렸던 이유
blocking 호출을 map 에서 수행해서 → flatMap
map
남발.
map
을 사용할 때마다 새로운 객체 생성 → Memory 증가
log()
남발. log appender 를 non-blocking 으로 변경할 것.
AsyncAppender
만으로는 안된다.
Test code에 BlockHound 사용해서 blocking call 탐지
blocking 이 꼭 필요하면
subscribeOn()
,
publishOn()
사용
Static Content in Spring WebFlux | Baeldung