람다로 구성하는 대신 전체 Subscriber를 가져오는 subscribe 메소드가 있다
BaseSubsriber 객체는 단일 사용이다
- 첫번째 Publisher를 cancel하면 두번째 Publisher도 cancel한다.
- 인스턴스를 두 번 사용하면 구독자의 onNext 메소드를 병렬로 호출하면 안되는 Reactive Streams 규칙을 위반하기 때문입니다.
- 결과적으로 익명 구현은 Publisher 호출 내에서 직접 선언 된 경우에만 적합합니다.
SampleSubscriber 예시
BaseSubscriber는 subscriber의 행동을 대신하는 훅을 제공한다
무제한 요청을 트리거하고 subscribe() 와 같이 작동함
BaseSubscriber 상속은 요청량을 조절하는데 매우 유용하다
SampleSubscriber<Integer> ss = new SampleSubscriber<Integer>();
Flux<Integer> ints = Flux.range(1, 4);
ints.subscribe(i -> System.out.println(i),
error -> System.err.println("Error " + error),
() -> {System.out.println("Done");},
s -> s.request(10));
ints.subscribe(ss);
// SampleSubscriber
public class SampleSubscriber<T> extends BaseSubscriber<T> {
public void hookOnSubscribe(Subscription subscription) {
System.out.println("Subscribed");
request(1);
}
public void hookOnNext(T value) {
System.out.println(value);
request(1);
}
}
'JAVA > Reactor' 카테고리의 다른 글
비동기 멀티 스레드 생성 (0) | 2020.06.08 |
---|---|
프로그래밍 방식의 시퀀스 생성 (0) | 2020.06.04 |
배압과 요청 재구성 방법 (0) | 2020.06.04 |
Flux, Mono 생성 후 Subscribe (0) | 2020.06.04 |
React 정리 (0) | 2020.06.04 |