오늘
클라이언트의 요청에 반응을 잘하는 시스템을 의미한다.
리액티브 프로그래밍을 위한 표준 사양 또는 명세라고 한다.
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 체인으로 표현되는 데이터의 흐름을 의미한다.