spring
@TransactionalEventListener 사용
일반적으로 서비스 개발 시 여러가지 작업을 하나의 트랜잭션으로 처리하는 경우가 많이 있다. 개발자는 비즈니스 로직에만 신경쓰고 트랜잭션은 스프링에서 지원하는 @Transactional로 성공/실패에 따른 처리를 맡기므로 편하게 개발을 할 수가 있다. 하지만, 트랜잭션 내의 하나의 작업이 실패하는 경우 전체가 롤백되기를 기대하지만 일부 작업이 롤백이 되지 못하는 경우가 있다면 어떨까? 예를 들면 로컬 트랜잭션(DB 저장)이 아닌 네트워크 전송(HTTP, 메시징)을 하는 경우를 생각해 볼 수 있다. 아래 예제를 통해 좀 더 구체적으로 알아보자. 1. 사용 예제 다음은 사용자 등록을 하는 시나리오이며 사용자 등록과 함께 사용자의 쿠폰을 발행하는 서비스를 개발하는 예제이다. 사용자 등록 사용자 등록 이벤트 발생..
2023. 1. 13. 21:03