danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • Security
  • JPA
  • Database
  • docker
  • Jackson
  • CICD
  • Saving Plans
  • Kotlin
  • gitlab
  • Spring
  • S3
  • AWS
  • SWAGGER
  • 도메인 주도 설계
  • DDD
  • POSTGIS
  • Bitmask
  • 자바 최적화
  • 마이크로서비스패턴
  • nuribank
  • connection
  • mockito
  • 등가속도 운동
  • reactive
  • Thymeleaf
  • PostgreSQL
  • 트랜잭션
  • RDS
  • ChatGPT
  • Java

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

book/스프링으로 시작하는 리액티브 프로그래밍

[리액티브 프로그래밍] Reactor 개요

2024. 3. 11. 21:18

스프링으로 시작하는 리액티브 프로그래밍 책 정리

 

스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고

스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는

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 핵심 구성요소

  1. 데이터를 생성해서 제공
  2. 데이터를 가공
  3. 전달받은 데이터를 처리

-> 이 세 가지 단계는 Reactor의 필수 단계이다.

 


 

참고자료

https://projectreactor.io

 

저작자표시 비영리 동일조건 (새창열림)

'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
    'book/스프링으로 시작하는 리액티브 프로그래밍' 카테고리의 다른 글
    • [리액티브 프로그래밍] Cold Sequence와 Hot Sequence
    • [리액티브 프로그래밍] 마블 다이어그램(Marble Diagram)
    • [리액티브 프로그래밍] 리액티브 프로그래밍을 위한 사전 지식
    • [리액티브 프로그래밍] Blocking I/O와 Non-Blocking I/O
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바