티스토리 뷰

728x90
반응형

지난 글에서 리액티브 프로그래밍과 리액티브 스트림즈, 그 구현체인 프로젝트 리액터에 대해 알아보았다.

 

2022.10.12 - [Development/Spring] - [Spring]리액티브 프로그래밍(Reactive Programming)

2022.10.12 - [Development/Spring] - [Spring]리액티브 스트림즈(Reactive Streams)

 

[Spring]리액티브 스트림즈(Reactive Streams)

지난 글에서 리액티브 시스템이란 쉽게 말해 반응 속도가 빠른 프로그램을 설계하는 원칙이며 리액티브 프로그래밍은 그 원칙을 구현하는 논 블로킹, 비동기 방식의 선언형 개발 패러다임이라

gnidinger.tistory.com

짧게 요약하면 아래와 같은 내용이다.

 

  • 리액티브 프로그래밍 - 논 블로킹, 비동기 데이터 흐름 및 새로운 정보의 가용성에 기반을 둔 선언형 개발 패러다임
  • 리액티브 스트림즈 - 리액티브 프로그래밍을 위한 자바 진영의 표준 명세서, 즉 인터페이스의 모음
  • (프로젝트) 리액터 - Spring5의 리액티브 스택에 구현된 구현체, 스프링과 가장 궁합이 잘 맞는다.

이번 글에선 리액터를 사용한 리액티브 프로그래밍의 기초와 자주 쓰이는 용어를 정리한다.

 

시작하기 전에, 리액터가 포함된 웹플럭스 사용을 위해 build.gradle에 다음과 같은 의존성을 추가한다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-webflux'
    ...
}

이어서 바로 코드와 용어를 보자.

import reactor.core.publisher.Flux;

import java.util.List;

public class ReactiveExample {
    public static void main(String[] args) {
    
        Flux // Publisher
                .fromIterable(List.of(1, 3, 6, 7, 8, 11)) // Operator
                .filter(number -> number > 4 && (number % 2 == 0)) // Operator
                .reduce(Integer::sum) // Operator
                .subscribe(System.out::println);

    }
}

 

Terminology Object Description
Publisher Flux 데이터를 내보내는 주체. 스트림으로 치면 생성에 해당한다.
Emit   Publisher가 데이터를 내보내는 행위
Signal   Publisher가 발생시킨 이벤트(내보낸 데이터)
Operator fromIterable(), filter(), reduce() 데이터를 가공하는 메서드. 스트림으로 치면 중간 연산에 해당한다.
Sequence   Operator 체인으로 표현되는 데이터의 흐름 전체
Up/Downstream   특정 Operator를 기준으로 위쪽과 아래쪽의 Sequence
Subscribe subscriber() 구독. 연산을 시작하는 트리거이며 스트림으로 치면 최종 연산에 해당한다.
Subscriber System.out::println 연산을 마친 데이터를 소비하는 주체. 최종 연산의 행동을 결정한다.

 

전체적인 코드의 흐름과 사용하는 메서드 일부가 자바 스트림과 비슷해서 재미있었다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함