MonoSink
현재 진행중인 사이드 프로젝트에서 사용하는 WebFlux를 분석하면서 정리한 글입니다.
아무 값도 없거나 단일 값 또는 오류를 내보내지 않도록 실제 다운스트림 subscriber 주위에 Wrapper 인터페이스 API입니다.
void success();
값 없이 완료합니다.
이 메서드를 여러 번 호출하거나 다른 종료 메서드 이후에 호출해도 아무런 효과가 없습니다.
void success(@Nullable T value);
주어진 값(value)으로 이 Mono를 완성합니다.
이 메서드를 여러 번 호출하거나 다른 종료 메서드 이후에 호출해도 효과가 없습니다(값이 삭제됨).
value에 null 값을 넣어서 이 메서드를 호출하면 표준 구현에서 success()로 자동 호출됩니다.
void error(Throwable e);
지정된 예외(e)와 함께 종료합니다.
이 메서드를 여러 번 호출하거나 다른 종료 메서드 이후에 호출하는 작업은 지원되지 않습니다. Hooks.onErrorDropped(Consumer) 훅을 통해 예외를 무시합니다.
이는 예외를 숨겨지지 않기 위함입니다.
Context currentContext();
현재 subscriber 컨텍스트를 반환합니다.
컨텍스트는 Mono.ContextWrite(Function) 연산자를 통해 또는 CoreSubscriber.currentContext()를 재정의하는 하위 subscriber에 의해 직접 제공될 수 있습니다.
MonoSink<T> onRequest(LongConsumer consumer);
이 sink에 대한 요청을 알릴 LongConsumer를 이 MonoSink에 연결합니다.
Parameters:
consumer - 요청에 따라 호출할 Cosumer
Returns:
요청을 통지받는 Cosumer가 있는 MonoSink
MonoSink<T> onCancel(Disposable d);
이 MonoSink가 취소될 때 콜백으로 Disposable이 연결됩니다.
콜백은 최대 1개까지만 등록할 수 있습니다.
이 메서드에 대한 그 다음 호출은 관련 없는 Disposable을 즉시 폐기하게 됩니다.
콜백은 다운스트림 서브스크립션이 취소된 경우에만 적용됩니다.
Parameters:
d - 콜백으로 사용할 Disposable
Returns:
취소 콜백이 있는 MonoSink
MonoSink<T> onDispose(Disposable d);
이 MonoSink가 효과적으로 폐기될 때, 즉 더 이상 사용할 수 없는 경우에 대한 콜백으로 Disposable을 첨부합니다.
여기에는 OnComplete, onError onCancel 메서드가 모두 포함됩니다.
콜백은 최대 1개까지만 등록할 수 있습니다.
이 메서드에 대한 그 다음 호출은 관련 없는 Disposable을 즉시 폐기하게 됩니다.
"dispose" 용어는 sink의 관점에서 사용됩니다.
Subscription(Subscription.cancel() 신호) 처리에 사용되는 Mono.subscribe()의 Disposable.dispose() 메서드와 혼동하면 안됩니다.
Parameters:
d - 콜백으로 사용할 Disposable
Returns:
모든 터미널 신호 또는 취소 시 콜백이 포함된 MonoSink