inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부

웹플럭스 처리 프로세스 문의

348

수강자

작성한 질문수 10

0

  1. DB 조회

  2. 조회된 내용으로 비즈니스 로직 처리(자바 코어 연산)

  3. 연산된 결과 DB 등록

 

사용자 요청시에 위의 3가지 업무를 Webflux로 처리해야한다면 어떤 방식으로 처리해야하는지 감이 잘 안오는데, 설명 부탁드립니다. Webflux에 적합하지 않은 업무일 수도 있다는 생각이 들어 문의드리게 되었습니다.

참고로 위의 3가지 업무는 순차적으로 처리가 되어야 하는 업무입니다.

 

publisher가 위의 3개 내용을 각각을 별도의 subscriber에게 발생한다면 데이터 정합성이 깨질거 같은데...어떻게 처리해야하는지 설명부탁드립니다.

java spring project-reactor webflux

답변 1

0

Kevin

석재님, 안녕하세요?

요청 처리 순서가 질문해 주신것(아래)과 같을 경우, WebFlux에서는 어떻게 처리해야할지에 대한 질문을 주셨는데요.

  1. DB 조회

  2. 조회된 내용으로 비즈니스 로직 처리(자바 코어 연산)

  3. 연산된 결과 DB 등록

위와 같은 순서대로 처리하는 것은 Spring MVC와 처리 방법이 근본적으로 다르지 않습니다.

다만, 클라이언트 쪽에서 들어오는 요청을 처리하는 Controller부터 비즈니스 로직을 처리하는 계층의 클래스(일반적으로 서비스 계층의 클래스)를 거쳐 데이터 액세스 계층까지 전체 로직이 Publisher(Mono 또는 Flux)의 Sequence 내에서 처리가 되어야 Non-Blocking I/O 처리가 제대로 이루어집니다.

 

publisher가 위의 3개 내용을 각각을 별도의 subscriber에게 발생한다면 데이터 정합성이 깨질거 같은데...

--> 별도의 subscriber들이 각각 최종 처리를 해야 할 특별한 상황이라면 그렇게 할수도 있겠지만 일반적으로 Mono나 Flux를 처리하는 subscriber는 Controller에게 요청을 전송한 클라이언트 쪽이 되기 때문에 서버 쪽에서 데이터 정합성이 깨지지는 않습니다(내부적으로 로직을 잘못 짜면 당연히 깨질 수 있겠지만요).

 

질문하신 부분은 3부에서 다룰 내용인데 제가 아직 2부 강의 작업 중이라 상세한 설명을 드리기가 힘든 부분 양해 부탁드리겠습니다.

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

310

1

Backpressure Example 코드 질문드립니다

0

259

2

Backpressure 전략

0

308

2

Flux 와 Mono

0

465

1