인프런 커뮤니티 질문&답변
주문이벤트 발행에서 이벤트 발행을 동기적으로 처리하는 이유
작성
·
16
0
안녕하세요, placeOrder 메서드의 TransactionSynchronization 구현 부분에 대해 질문드립니다!
afterCommit() 내부에서 Kafka 전송을 동기적으로 처리하고 계신데, 이벤트 발행 안정성을 위한 의도적인 설계인지 궁금합니다!
비동기로 처리하면 API 응답은 빨라지지만 전송 실패 처리가 복잡해진다고 생각하는데, Outbox Pattern 같은 메시지 전송 보장 메커니즘을 적용하지 않은 상태에서 안정성을 위해 동기 처리를 선택하신 걸까요?
현업에서는 어떤 방법을 선호하는지도 궁금합니다!
좋은 강의 감사합니다.
답변 1
0
최상용
지식공유자
발그레지는개발님 안녕하세요!
2가지로 나누어볼 수 있을것 같아요.
afterCommit 에서 처리를 한 이유
DB 의 트랜잭션과 분리하여 이벤트는 발행되고 DB 는 롤백되는 상황을 막기 위함입니다.
동기로 발송한 이유
kafka 에 이벤트를 발행하는것은 소요시간이 그리크지 않은 작업으로 비동기로 할 이유가 없었기때문에 동기적으로 처리하였습니다.
전송 실패처리
이것은 동기, 비동기 상관없이 잘 처리가 되어야 할 것 같습니다.
말씀하신대로 전송 보장이 되어야 한다면 outbox pattern 을 활용하여 처리할 수 있을 것 같습니다.
추가적인 질문이 있으시다면 말씀해주세요!




