Replies: 1 comment 2 replies
-
|
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
알림 트랜잭션 분리
알림 트랜잭션 분리
@Transactional(propagation = Propagation.*REQUIRES_NEW*)
알림이 실패한 경우에도 메시지 전송이 정상적으로 처리되도록 하기 위해 트랜잭션을 분리하고자 사용
해당 프로퍼게이션 옵션으로 인해 트랜잭션 전파는 막을 수 있다.
(새로 생성된 트랜잭션이 롤백되더라도 기존의 트랜잭션은 롤백되지 않음)
예외 전파는 막을 수 없다. 따라서 별도의 예외 처리가 필요했다.
@EventListener
@Transactional
어노테이션은 메서드 시작 시점에 트랜잭션을 열고 메서드가 끝나는 지점에서 커밋한다.@EnableAsync
)@TransactionalEventListener(phase = TransactionPhase.*AFTER_COMMIT*)
phase
옵션이AFTER_COMMIT
BEFORE_COMMIT
,AFTER_COMMIT
,BEFORE_ROLLBACK
,AFTER_COMPLETION
)Propagation.*REQUIRES_NEW
* 옵션이다.→ 이유가 궁금하다!
@EventListener
는 event publisher 트랜잭션 안에서 동작하지만, 메서드가 종료되는 시점에만 커밋이 발생하기 때문에 추가 커밋이 발생하지 않아 쓰기 작업이 가능했던 것이다!정리
@EventListener
@TransactionalEventListener
보충 내용
Beta Was this translation helpful? Give feedback.
All reactions