기본적인게 이해가 안되서 진행이 어렵네요..
564
4 asked
doOnNext에서 로직을 실행하는것이랑 subscribe안에서 로직을 실행하는것이랑 어떤 차이가 있는건가요?
순서는 doOnNext가 먼저 실행되는것으로 보이는데
재구독이 일어났을때 핫 퍼블리셔랑, 콜드 퍼블리셔의 차이로 데이터 소비 패턴이 달라진다 정도로 이해하면 되는걸까요?
실무에서 사용되는 코드가 subscribe();로 별도에 람다식이 없고 전부 doOnNext안에서 처리하는 로직으로 이루어져 있어서 문의 드립니다.
Answer 2
0
안녕하세요?
doOnNext 내에서 실행되는 로직과 subscribe안에서 실행되는 로직이 어떤 차이점이 있는지 질문 주셨는데요.
doOnNext()는 Upstream 쪽에서 emit 되는 데이터가 정상적으로 잘 emit 되고 있는지 어떤 데이터가 emit 되고 있는지를 확인하기 위한 용도로 주로 사용되는데 doOnNext 바로 위에 있는 Operator에서 emit 되는 데이터를 전달 받아서 로그로 출력한다든지 하는 부가적인 작업에 사용할 수 있습니다.
공식 문서에서 확인을 해 보시면 아시겠지만 doOnXXXX()으로 시작하는 Operator는 Operator 분류 목록에서 peek 할 수 있는 Opertor로 분류가 되어 있는데, 여기서 peek의 의미는 Reactor Sequence의 내부를 엿보다 라는 의미입니다. 즉, 내부 동작 과정을 확인하기 위한 용도로 사용한다는 의미로 보시면 될 것 같아요.
subscribe()는 말 그대로 여러 단계의 Upstream Operator를 거친 후에 최종 데이터를 전달 받아서 소비하는 역할을 합니다.
실제 업무에서 사용되는 로직을 제가 잘 몰라서 구체적으로 답변 드리기는 힘들겠지만
doOnNext() 안에서 모든 처리를 한다면 기능적으로 역할 분리가 제대로 되지 않았을 가능성도 있을 것 같습니다.
답변이 도움 되셨길 바랄게요.
감사합니다!
subscription signal 에 upstream 으로 이동하는 순서
0
89
2
Webflux의 Non-Blocking 특성에 대해 문의 드립니다.
1
212
3
Downstream Mono, Flux가 subscriber인가요?
0
159
1
source.next와 source.emit의 차이에 대한 질문입니다.
0
214
2
StepVerifier를 이용한 Testing (1) - expectNoEvent 에 관해서
2
233
1
backpressure latest 전략
0
243
2
StepVerifier를 이용한 Testing (1) 의 StepVerifiter 질문
0
231
1
[Scheduler의 종류 강의] Schedulers.newParallel 메서드에 관한 질문
0
209
2
Backpressure Drop 전략에서 다시 버퍼가 채워지는 시점에 대한 질문입니다.
0
167
2
Reactor 3부의 오픈 일정에 관해서 문의드립니다!
0
173
1
inner sequence context 관련 질문
0
139
1
boundedElastic 관련 질문
1
320
1
강의자료 관련 질문드립니다.
0
250
3
newBoundedElastic 에서 queue 에 쌓이는 룰
0
214
2
import com.itvillage.utils.Logger;
0
148
1
Interceptor에서 reactor Context 유지하는 방법
0
280
2
예시코드는 webflux의 이점보단 webclient의 이점 아닌가요?
3
359
1
advancedTimeBy와 thenAwait 사용 예시가 궁금합니다
0
202
1
context의 read, write의 실행 순서
0
262
2
DROP 전략과 LATEST 전략의 차이점이 무엇인가요?
3
637
3
백프레셔 전략 관련해서
1
307
1
Backpressure Example 코드 질문드립니다
0
257
2
Backpressure 전략
0
305
2
Flux 와 Mono
0
461
1

