<aside> 💡 비동기 이벤트 처리 중 URL 요청 절차가 완료되지 않았는데 새로운 요청이 들어오면 진행 중이던 작업이 중단되고 새로운 요청이 처리되는 문제가 발생했습니다.
</aside>
이 프로젝트는 음악 트랙을 저장할 때 외부 크롤링 서버를 통해 YouTube URL을 가져와 데이터베이스를 업데이트하는 기능을 포함합니다. 이를 위해 Spring의 비동기 이벤트 처리와 트랜잭션 관리를 사용했습니다.
특정 트랙을 저장할 때 TrackSavedEvent 이벤트를 비동기적으로 처리하여 외부 서버에 요청을 보내고 URL을 가져와 DB를 업데이트합니다. 하지만 @Order 애노테이션을 설정하지 않아 URL 요청 절차가 완료되지 않은 상태에서 새로운 요청이 들어오면, 기존 작업이 중단되고 새로운 요청이 처리되는 문제가 발생했습니다
문제의 원인을 파악하기 위해 다음과 같은 초기 분석을 진행했습니다:
분석 결과, @Order 애노테이션을 설정하지 않아서 발생한 문제임을 확인했습니다. 이로 인해 비동기 작업의 우선순위가 명확하지 않아 동시 요청 시 작업이 중단되는 현상이 발생했습니다.
문제의 원인을 더욱 명확히 하기 위해 다음과 같은 진단을 진행했습니다:
문제를 해결하기 위해 다음과 같은 단계별 시도를 했습니다: