mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 06:46:25 +00:00
[문제] - ParticipantRegistered 이벤트 처리 시 StaleObjectStateException 발생 - 100개의 이벤트가 동시에 발행되어 EventStats 동시 업데이트 충돌 - TransactionRequiredException 발생 (트랜잭션 컨텍스트 부재) [해결] 1. 비관적 락(Pessimistic Lock) 적용 - EventStatsRepository에 findByEventIdWithLock 메서드 추가 - PESSIMISTIC_WRITE 락으로 읽는 순간부터 다른 트랜잭션 차단 2. 트랜잭션 추가 - 모든 Consumer 메서드에 @Transactional 어노테이션 추가 - EventCreatedConsumer, ParticipantRegisteredConsumer, DistributionCompletedConsumer 3. 이벤트 발행 속도 조절 - SampleDataLoader에서 10개마다 100ms 대기 - 동시성 충돌 빈도 감소 [수정 파일] - EventStatsRepository.java: 비관적 락 메서드 추가 - ParticipantRegisteredConsumer.java: @Transactional 추가, 락 메서드 사용 - DistributionCompletedConsumer.java: @Transactional 추가, 락 메서드 사용 - EventCreatedConsumer.java: @Transactional 추가 - SampleDataLoader.java: 이벤트 발행 속도 조절 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>