해결된 질문
24.05.11 00:54 작성
·
117
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);
}
}
답변 1
1
2024. 05. 12. 21:33
조D영래님 안녕하세요.
여러가지 방법이 있을듯합니다.
applied user 에서 제거와 coupon count 1 감소하여 추후 동일한 유저가 다시 시도 가능하도록 함
유저의 id 를 기록한 후 별도의 저장소에 저장하여 추후 재시도를 통해 쿠폰발급
감사합니다.