Reactive Streams
리액티브 프로그래밍을 표준화한 명세이다.
- 논 블로킹, 백프레셔로 비동기 스트림 처리
- 리액티브 프로그래밍을 가능하게 하는 최소한의 인터페이스, 메서드, 프로토콜 셋 정의.
- JVM 기반 언어 및 JS로 구현되는 중립적인 접근 방식 목표
- 다중 전송 스트림(TCP, UDP, HTTP 및 WebSockets) 지원
인터페이스
-
publisher
구독자에게 받은 요청에 대한 응답 요소 스트림 제공.
모든 구독자에게 서비스 제공 가능.
-
subscriber
이벤트 스트림 수신자, 구독은 다음과 같은 2단계 과정이다.
- Publisher.subscribe(구독자) 호출
- Subscription.request(long) 호출
구독이 완료되면 onNext 메서드를 사용해 알림 처리를 할 수 있다. onComplete는 알림의 끝
-
subscription
publisher와 subscriber의 연결을 나타내고, request를 사용해 많은 데이터 요청, cancle을 사용해 알림 구독 취소를 할 수 있다.
구현체
- RxJava
- Project Reactor
- Akka Streams
- Vert.x
- ReactiveX
- Flow API