Sinks
Reactor Signal을 프로그래밍 방식으로 전송할 수 있는 Sinks
Sinks
Reactive Streams에서 리액티브 스트림즈의 구성 요소 중 하나로 언급했던 Processor는 Publisher와 Subscriber의 기능을 모두 지니고 있습니다. 그런데 Processor의 기능을 개선한 Sinks가 Reactor 3.4.0 버전부터 지원되기 시작했으며, Processor와 관련된 API는 3.5.0 버전부터는 완전히 제거될 예정입니다.
Reactor API 문서에서는 Sinks를 다음과 같이 설명합니다.
Sinks are constructs through which Reactive Streams signals can be programmatically pushed, with Flux of Mono semantics.
지금까지 학습한 방식은 모두 Flux 또는 Mono가 onNext 같은 Signal을 내부적으로 전송해주는 방식이었는데, Sinks를 사용하면 프로그래밍 코드를 통해 명시적으로 Signal을 전송할 수 있습니다.
Reactor에서 프로그래밍 방식으로 Signal을 전송하는 가장 일반적인 방법은 generate()
이나 create()
Operator를 사용하는 것입니다. generate()
이나 create()
Operator는 싱글 스레드 기반으로 동작하고, Sinks는 멀티 스레드 기반으로 동작한다는 차이점이 있습니다. Sinks는 그리고 멀티 스레드 환경에서 스레드 안전성을 보장 받을 수 있는 장점이 있습니다.