입문은 가이드 문서 를 보면 좋을 것 같다.
Publisher 에서 데이터 소스를 스트림화 하고 데이터를 가공(transformation)한 다음 Subscriber 가 구독하여 추가적인 처리를 하는 것이 큰 흐름이다.(push-based 이다. Iterable-Iterator 는 pull-based)Subscriber 의 처리 속도가 Publisher 의 전달 속도보다 빠른 경우 backpressure 기능을 사용하여, 전달 속도를 조절할 수 있다.Publisher.subscribe(Subcscriber) 로 스트림 처리가 시작된다.reactor 에서는 Reactive Streams 의 Publisher 를 구현한 Flux, Mono 를 제공한다.
각 Publisher 가 발행하는 시그널 next, completion, error 에 대해 Subscriber 는 onNext, onComplete, onError 로 시그널 처리 로직을 정의하여 사용할 수 있다.
BaseSubscriber 를 이용하면 커스텀 Subscriber 를 쉽게 구현할 수 있다.
Subscriber 가 request 를 Publisher 에게 보냄으로써 backpressure 를 사용할 수 있다.
request(Long.MAX_VALUE) 는 backpressure 를 사용하지 않는 unbounded 모드로써 Publisehr 에게 최대한 빠르게 데이터를 발행하도록 요청한다.