인프런 커뮤니티 질문&답변

수강자님의 프로필 이미지
수강자

작성한 질문수

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

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

작성

·

299

0

  1. DB 조회

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

  3. 연산된 결과 DB 등록

 

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

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

 

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

답변 1

0

Kevin님의 프로필 이미지
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부 강의 작업 중이라 상세한 설명을 드리기가 힘든 부분 양해 부탁드리겠습니다.

수강자님의 프로필 이미지
수강자

작성한 질문수

질문하기