Context 체인 전파
296
작성한 질문수 27
안녕하세요.
Context 체인은 아래에서부터 위로 전파된다고 하셨는데 그 이유가 궁금합니다.
Stream()에서 순서대로 연산을 실행해서 조건에 맞는 것만 다음연산으로 넘어가는데 어떻게 context는 반대 방향으로 동작을 하나요?
답변 1
0
안녕하세요? Context의 전파 특성에 대해서 질문 주셨는데요.
공식 문서 상에는 Context에 저장된 데이터가 아래쪽에서 위쪽으로 전파되는 특성을 가진다라고 나와있지만 왜 그렇게 전파되는지에 대한 이유에 대해서는 설명이 되어 있지 않습니다.
다만, 이유에 대해서 유추를 해보면 Reactor Operator 체인의 특성과 연관이 있을거라고 생각됩니다.
Reactor 체인에서 아래 쪽으로 전달되는 데이터는 각각의 Operator 입장에서 데이터소스가 될텐데요.
Context에 저장된 데이터들은 데이터소스에 포함되어 조금 더 구체적인 데이터로 구성된 후, 아래 쪽으로 전달되는게 자연스럽다고 생각합니다.
그런데 굳이 위에서 아래로가 아니라 아래에서 위로 전파되어야 하는지에 대한 부분은,
각각의 Operator 들이 내부적으로 subscribe()를 매번 호출할텐데 이 호출이 아래에서 위로(역방향으로) 호출되면서 Context에 세팅된 값들을 최상위 Upstream까지 전파한 후, 사용하기 때문이라고 생각할 수 있을 것 같습니다.
그리고 일반적으로 쓰레드 간에 상태 정보를 공유하는건 굉장히 복잡한 과정을 거쳐야 할텐데, Reactor의 Context를 통해 쓰레드 간에 상태 정보를 손쉽게 공유할 수 있게 해주는 것과도 연관이 있을거라고 생각됩니다.(내부적으로 소스 코드를 다 파헤쳐 본 것은 아니라서 그렇게 예상만 하고 있습니다.)
subscription signal 에 upstream 으로 이동하는 순서
0
90
2
Webflux의 Non-Blocking 특성에 대해 문의 드립니다.
1
213
3
Downstream Mono, Flux가 subscriber인가요?
0
160
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
323
1
강의자료 관련 질문드립니다.
0
250
3
newBoundedElastic 에서 queue 에 쌓이는 룰
0
215
2
import com.itvillage.utils.Logger;
0
149
1
Interceptor에서 reactor Context 유지하는 방법
0
283
2
예시코드는 webflux의 이점보단 webclient의 이점 아닌가요?
3
361
1
advancedTimeBy와 thenAwait 사용 예시가 궁금합니다
0
205
1
context의 read, write의 실행 순서
0
263
2
DROP 전략과 LATEST 전략의 차이점이 무엇인가요?
3
637
3
백프레셔 전략 관련해서
1
309
1
Backpressure Example 코드 질문드립니다
0
259
2
Backpressure 전략
0
308
2
Flux 와 Mono
0
465
1





