SEB_BE_43 / 23.03.24 회고

rse·2023년 3월 24일
0

코드스테이츠_BE_43

목록 보기
59/65

오늘

  • 리액티브 프로그래밍

Spring WebFlux[리액티브 프로그래밍]

클라이언트의 요청에 반응을 잘하는 시스템을 의미한다.

Reactive Streams?

리액티브 프로그래밍을 위한 표준 사양 또는 명세라고 한다.

Reactive Streams 에서 정의된 컴포넌트(구성요소)

Publisher
데이터 소스로 부터 전달 받은 데이터를 내보내는(emit) 역할을 한다.
subscribe 메서드의 파라미터로 전달되는 Subscriber 가 내보내진 데이터를 소비한다.

subscribe 는 구독 이라는 의미로 Publisher 가 내보내는 데이터를 수신할지 말지 결정하는 의미이다.

subscribe 의 메서드가 호출되지 않으면 Publisher 의 내보내는 프로세스는 실행되지 않는다.

Subscriber
구독자라는 의미를 가지고 있으며, Publisher 로부터 내보내진 데이터를 소비하는 역할이다.

onSubscribe() = 구독이 시작되는 시점에 호출된다. 메서드 내에서 Publisher 에게 요청할 데이터의 갯수나, 구독 해지 처리를 할 수 있다.

onNext() = Publisher 가 데이터를 내보낼 때 호출된다.

onError() = Publisher 가 내보낸 데이터가 Subscriber 에게 전달되는 과정에서 에러가 발생하면 호출된다.

onComplete() = Publisher 가 데이터를 내보내는 과정이 종료되면 호출 된다.

Subscription
Subscriber 의 구독 자체를 표현한 인터페이스 이다.
request() = Publisher 가 내보내는 데이터의 개수를 요청.
cancel() = 구독을 해지하는 역할을 한다.

명령형 프로그래밍 방식

위 코드처럼 코드가 어떤식으로 실행되어야 하는지에 대한 구체적인 로직이 보이는 것을 명령형 프로그래밍 방식이라고 한다.

선언형 프로그래밍 방식

리액티브 프로그래밍은 선언형 프로그래밍 방식을 사용한다.

Mono 라는 인터페이스는 Publisher 라이브러리에 저장되어 있는 인터페이스이다.

Publisher 는 데이터를 내보내는 역할을 하며, subscribe 메서드가 Publicher 에서 내보낸 데이터를 전달받아서 소비하는 역할을 한다.

즉, Mono.just("Hello, Reactive") 라고 적은 문자열을 subscribe(message에 담겨서 그대로 출력해주는 것이다.)

출력결과.

저 코드를 Stream 의 메서드 체인 형태로 바꿀 수도 있다.

실행결과는 전 코드와 같다.

아까와 코드는 비슷하지만 이번에는 Flux 가 Publisher 다.

용어 정리

Publisher = 데이터를 내보내는 주체
Emit = Publisher 가 데이터를 내보내는 것을 말한다.
Subscriber = Publisher 가 emit 한 데이터를 전달 받아서 소비하는 주체
Subscribe = 구독을 의미한다.
Signal = Publisher 가 발생시키는 이벤트를 의미한다.
Operator = 리액티브 프로그래밍에서 어떤 동작을 수행하는 메서드이다.
Sequence = Operator 체인으로 표현되는 데이터의 흐름을 의미한다.

profile
기록을 합시다

0개의 댓글