inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실습으로 배우는 선착순 이벤트 시스템

ApplyService#apply 트랜잭션 문제

해결된 질문

158

심플스택

작성한 질문수 4

0

안녕하세요~

강의 중 ApplyService#apply 트랜잭션 관련해서 질문이 있습니다.

apply 메서드가 appliedUserRepository#add 만 호출되거나 couponCountRepository#increase 까지만 호출되고 에러, 시스템 다운 등 특정 이유로 couponCreateProducer#create 는 호출되지 않게 되었을 때에 대한 처리가 필요할 것 같습니다.

어떻게 처리하는 것이 좋을까요??

 

@Service
@RequiredArgsConstructor
public class ApplyService {

    private final CouponRepository couponRepository;
    private final CouponCountRepository couponCountRepository;
    private final CouponCreateProducer couponCreateProducer;
    private final AppliedUserRepository appliedUserRepository;

    public void apply(final Long userId) {
        final Long applied = appliedUserRepository.add(userId);
        if (applied != 1) {
            return;
        }

        final long count = couponCountRepository.increase();

        if (count > 100) {
            return;
        }

        couponCreateProducer.create(userId);
    }
}

java docker spring-boot kafka redis

답변 1

1

최상용

조D영래님 안녕하세요.
여러가지 방법이 있을듯합니다.

  1. applied user 에서 제거와 coupon count 1 감소하여 추후 동일한 유저가 다시 시도 가능하도록 함

  2. 유저의 id 를 기록한 후 별도의 저장소에 저장하여 추후 재시도를 통해 쿠폰발급

감사합니다.

ApplyService와 Consumer서비스의 db공유?

0

55

2

consumer가 topic을 전부 사용하기 전에 사용자에게는 쿠폰이 발급된것으로 확인하는 과정에서 발생가능한 문제.

0

76

1

쿠폰에 관련되어서 좀 더 참고할만한 자료가 있을까요?

0

85

2

흐름정리 제가 이해한게 맞나요?

0

73

2

안되서 스트레스 받아요

-2

110

2

프로젝트 진행할때 모듈로 추가하는 이유가 궁금합니다!

0

184

2

Redis 활용하기 문제점 해결하기 부분이 이해가 잘 안됩니다...

0

213

1

카프카를 도입하고 난 뒤 로그로 보여지는 장점을 발견하지 못하고 있습니다.

0

167

2

키생성 방식에 따른 성능

0

168

2

사용자 동선에 대한 트랜잭션 문의

0

134

2

강사님 강의를 듣고 실제 프로젝트에서 이벤트 응모 시스템을 만들어 봤습니다.

0

210

1

쿠폰 발급 개수 제한

0

183

2

ApplyService 의 총 처리 시간이 궁금합니다.

0

154

1

쿠폰 생성 에러 처리에 관해서 질문이 있습니다.

0

224

2

마지막에 하신 테스트 자체는 실패하는 게 맞는거죠??

0

276

2

안녕하세요 질문 있습니다!

0

294

1

쿠폰 발급 유저 흐름에 대한 질문

0

308

2

수량 조절에 대한 질문이 있습니다.

0

230

2

kafka Producer 실행 중 에러 시 redis count 정합성 이슈

0

398

2

test 과정에서 오류가 발생합니다.

0

383

1

도커 환경설정에 대해서

0

269

2

Redis의 INCR 사용 해도 Race condition이 잡히지 않는 문제

0

598

1

consumer 모듈

0

322

2

카프카 토픽 생성오류

0

383

2