스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고
스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는
product.kyobobook.co.kr
Reactor란?
✅ Reactor
Spring Framework 팀 주도하에 개발된 리액티브 스트림즈의 구현체.
Spring Framework 5 버전부터 Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 한다.
-> Reactor Core 라이브러리가 Spring WebFlux 라이브러리에 포함되어 있다.
Hello Reactor 코드로 보는 Reactor의 구성요소
public class Example5_1 { public static void main(String[] args) { Flux<String> sequence = Flux.just("Hello", "Reactor"); sequence.map(data -> data.toLowerCase()) .subscribe(data -> System.out.println(data)); } }
✅ Publisher
Flux는 Reactor에서 Publisher 역할을 한다.
Publisher는 입력으로 들어오는 데이터를 제공하는 역할을 한다.
✅ 데이터 소스
3번 라인에서 just 메서드의 파라미터로 전달한 "Hello", "Reactor"가 입력으로 들어오는 데이터다.
이는 Publisher가 최초로 제공하는 가공되지 않은 데이터로서 데이터 소스라고 부른다.
✅ Subscriber
5번 라인에서 subscribe 메서드의 파라미터로 전달된 람다표현식이 Subscriber 역할을 한다.
이 람다 표현식은 Consumer 함수형 인터페이스이다.
✅ Operator
3번 라인의 just(), 4번 라인의 map()은 Reactor에서 지원하는 Operator다.
just(): 데이터를 생성해서 제공하는 역할.
map(): 전달받은 데이터를 가공하는 역할.
-> Operator는 리턴 값으로 Publisher를 반환하기 때문에, Operator 체인을 형성하여 연속적으로 호출할 수 있다.
위 예시는 다음과 같이 표현할 수 있다.
public class Example5_1 { public static void main(String[] args) { Flux.just("Hello", "Reactor") .map(data -> data.toLowerCase()) .subscribe(data -> System.out.println(data)); } }
결과는 모두 이렇다.
hello reactor
✅ Reactor 핵심 구성요소
- 데이터를 생성해서 제공
- 데이터를 가공
- 전달받은 데이터를 처리
-> 이 세 가지 단계는 Reactor의 필수 단계이다.
참고자료
'book > 스프링으로 시작하는 리액티브 프로그래밍' 카테고리의 다른 글
[리액티브 프로그래밍] Cold Sequence와 Hot Sequence (0) | 2024.03.18 |
---|---|
[리액티브 프로그래밍] 마블 다이어그램(Marble Diagram) (0) | 2024.03.11 |
[리액티브 프로그래밍] 리액티브 프로그래밍을 위한 사전 지식 (0) | 2024.03.03 |
[리액티브 프로그래밍] Blocking I/O와 Non-Blocking I/O (2) | 2024.02.26 |
[리액티브 프로그래밍] 리액티브 스트림즈(Reactive Streams) (0) | 2024.02.19 |