반응형
Reactor 는 Reactive Streams 의 구현체이다.
백 프레셔가 가능한 PUB/SUB 모델로 싱글 스레드에서 이벤트 처리를 하는 이벤트 처리 프로세스이다.
( 여담이지만, NodeJS 따라하는 것처럼 보이지만 사실 Spring 진영에서 먼저 나왔다고 한다. 관심이 없었을 뿐 )
Reactor 를 이해하려면 Reactive Streams 의 PUB/SUB 모델의 디자인 패턴을 살펴보아야 한다.
Application 에서 Publisher 객체와 Subscriber 객체를 생성하고 Publisher.subscribe 메서드를 호출한다.
Publisher 에서는 생성된 데이터를 포장하여 Subscription 객체를 생성하고, subscribe 메서드에서 전달받은 Subscriber 의 onSubscribe 메서드를 호출하여 생성된 Subscription 객체를 인자로 넘긴다. Publisher 역할은 여기서 끝이다.
한 마디로 Publisher 는 정보를 생성하여 포장하고 그것을 구독자와 연결시켜주는 중매자이다.
onSubScribe 메서드에서는 인자로 넘어온 Subscription 의 request 를 호출하여 데이터들을 요청된 크기만큼 가져온다.
(백 프레셔 기능이다.) 요청된 크기만큼 데이터를 넘겨줄 때까지 데이터들을 하나씩 SubScriber 의 onNext 메서드를 호 출하고 다 넘겨주었다면 onComplete 메서드를 호출한다. 자세한 내용은 아래 동영상을 참고하자.
반응형