주문이벤트 발행에서 이벤트 발행을 동기적으로 처리하는 이유
80
4 asked
안녕하세요, placeOrder 메서드의 TransactionSynchronization 구현 부분에 대해 질문드립니다!
afterCommit() 내부에서 Kafka 전송을 동기적으로 처리하고 계신데, 이벤트 발행 안정성을 위한 의도적인 설계인지 궁금합니다!
비동기로 처리하면 API 응답은 빨라지지만 전송 실패 처리가 복잡해진다고 생각하는데, Outbox Pattern 같은 메시지 전송 보장 메커니즘을 적용하지 않은 상태에서 안정성을 위해 동기 처리를 선택하신 걸까요?
현업에서는 어떤 방법을 선호하는지도 궁금합니다!
좋은 강의 감사합니다.
Answer 1
0
발그레지는개발님 안녕하세요!
2가지로 나누어볼 수 있을것 같아요.
afterCommit 에서 처리를 한 이유
DB 의 트랜잭션과 분리하여 이벤트는 발행되고 DB 는 롤백되는 상황을 막기 위함입니다.
동기로 발송한 이유
kafka 에 이벤트를 발행하는것은 소요시간이 그리크지 않은 작업으로 비동기로 할 이유가 없었기때문에 동기적으로 처리하였습니다.
전송 실패처리
이것은 동기, 비동기 상관없이 잘 처리가 되어야 할 것 같습니다.
말씀하신대로 전송 보장이 되어야 한다면 outbox pattern 을 활용하여 처리할 수 있을 것 같습니다.
추가적인 질문이 있으시다면 말씀해주세요!
Inner class로 Config를 지정하는 이유
0
6
1
혹시 강의 내용하면서 실습했던 것을 개인 깃에다 올려도 될까요?
0
19
1
시퀀스다이어그램은 무슨툴로 그리신건가요?
0
40
2
유저 이미지 등록 에러
0
41
1
service-discovery 프로세스 가동 이유
0
48
1
안녕하세요 한번 더 문의드립니다.
0
67
4
보상트랜잭션 실패시 데이터베이스 저장하는데 그것조차 실패하면 어떻게 하나요??
0
53
2
코드 자료는 없는걸까요?
0
76
3
DLQ의 수동 커밋에 대해서 질문있습니다.
0
67
2
혹시 다음 강의는 언제쯤 나올까요?
0
44
1
kubectl exec 에러가 발생해서 문의드립니다.
0
100
3
rabbitmq에 configservice 연결에 대해 질문있습니다.
0
63
1
pg사가 있다고 가정하면
0
46
1
38강 클러스터에 컨트롤러 연결 질문
0
77
2
spring-retry가 spring-core 패키지로 편입되었습니다.
2
157
1
TCC 주문 도중 문제 발생 시 상태 해소 전략 관련 질문입니다.
0
112
1
TCC PointService tryReserve 구현 관련 질문입니다.
0
94
2
[TCC 구현하기(2) - 동시성문제 해결하기] 질문
0
122
2
안녕하세요 강사님 질문있습니다.!!
0
123
2
테스트 코드
0
113
2
Optimistic Lock 사용이유
0
112
2
노트에 노션페이지 공유가 없습니다.
0
104
2
예시 코드 질문 드립니다
0
154
3
안녕하세요. Orchestration SAGA패턴 질문있습니다.
0
151
2

