상세 컨텐츠

본문 제목

스프링부트 리액티브 프로그래밍 | 웹플럭스

Framework/Spring | SpringBoot

by yooputer 2023. 2. 22. 09:32

본문

그렉 턴키스트, 『스프링 부트 실전 활용 마스터』의 1장 스프링부트 웹 애플리케이션 만들기를 요약한 내용입니다.


리액티브 프로그래밍

  • 논블로킹, 비동기 프로그래밍 모델
  • 함수형 프로그래밍 스타일
  • 스레드를 신경 쓸 필요 없는 동시성

 

리액티브 스트림

  • 발행자(publisher)와 구독자(subscriber)사이의 간단한 계약을 정의하는 명세
  • 구독자가 '난 10개만 더 받을 수 있어'라고 발행자에게 알리면, 발행자는 10개만 더 보낸다.

 

Project Reactor

  • VM웨어에서 만든 리액티브 스트림 구현체

 

리액터 타입

  • Flux<T>는 프로젝트 리액터의 핵심 타입
  • 일련의 T객체를 담고있는 컨테이너
  • Future과 달리 Flux은 시작할 수 있음을 나타낸다

 

Flux 특징

  • 하나 이상의 객체 포함 가능
  • 각 객체가 제공될 때 어떤 일이 발생하는지 지정 가능
  • 성공과 실패의 두가지 경로 모두에 대한 처리 방향 정의 가능
  • 결과 폴링(polling) 불필요
  • 함수형 프로그래밍 지원

Flux 메서드

  • map() : 다음 할 일을 지정
  • doOnNext() : 리액티브 스트림의 onNext() 시그널을 받을 때 할 일 지정
  • doOnError() : 리액티브 스트림의 onError() 시그널을 받을 때 할 일 지정
  • doOnComplete() : 리액티브 스트림의 onComplete() 시그널을 받을 때 할 일 지정

 

구독

  • 리액터 기반 애플리케이션에서는 구독하기 전까지는 아무 일도 일어나지 않는다
  • main() 메소드 안에서 subscribe()가 호출되어야 그때부터 뭔가가 동작한다

 

스프링MVC

  • 자바 서블릿 API 기반
  • 블로킹 방식으로 동작

 

스프링 웹플럭스

  • 웹 요청을 리액티브하게 처리

 

네티

  • 논블로킹, 비동기 웹 컨테이너

 

관련글 더보기