온라인 쇼핑몰에서 여러 사용자가 동시에 다양한 제품 정보를 조회하는 상황을 가정해봅시다.
새로운 요구사항:
사용자가 어떤 제품을 봤는지 기록하여 나중에 프로모션 이메일을 보내고 싶어합니다.
코드 예시 설명:
// pseudo code
public Product getProductInfo(int userId, int productId) {
emitCustomerProductViewRequest(userId, productId);
return this.productRepository.getProduct(productId);
}
이 코드에서 emitCustomerProductViewRequest가 사용자 조회 정보를 기록하는 부분입니다.
FluxSink를 사용하는 이유:
성능에 문제가 없는 이유:
요약하자면, FluxSink를 사용하면 주요 비즈니스 로직(제품 정보 조회)의 성능을 해치지 않으면서도 추가적인 데이터 처리(사용자 행동 기록)를 안전하고 효율적으로 수행할 수 있습니다.