[클라이언트 주문 취소]
- 주문 도메인에서 결제 도메인으로 결제 취소 요청 이벤트 발행(Kafka)
- 주문 도메인에서 상품 도메인으로 상품 재고 증가 요청 이벤트 발행(Kafka)
- 고려사항
- Outbox Table에 넣은 이벤트가 발행 실패될 경우 지속적으로 이벤트 발행 필요
- [구현 완료] 5분 Polling 방식으로 Outbox Table에서 실패된 이벤트를 재처리 구현
- Outbox Table에 완료된 이벤트를 계속 쌓을 경우 데이터가 많이 쌓일 경우 풀 테이블 스캔시 문제 발생 가능성
- [구현 완료] 매일 자정마다 완료된 이벤트들은 삭제 처리 구현
- Outbox Table에서 실패한 이벤트들을 재처리하더라도 계속 쌓일 수 있음
- 시간이 꽤 지난 이벤트들의 경우는 문제 해결을 위해 수동으로 처리하는 방법을 사용할 수도 있음 -> "꽤 지난"의 기준을 정하고 해당하는 기준을 바탕으로 수동으로 로직을 처리하거나, 클라이언트에게 관련 내용을 전송할 수 있는 로직을 구현해야 함
- Outbox Table에 넣은 이벤트가 발행 실패될 경우 지속적으로 이벤트 발행 필요
[클라이언트 주문시]
- 주문 도메인에서 상품 도메인으로 상품 재고 감소 요청(RestAPI)
- 고려 사항
- RestClient의 Blocking 문제를 해결하기 위해 VirtualThread를 이용해볼 수 있을 것 같음
- 외부 API 요청시 지속적인 요청 응답 불가로 인한 TimeOut 또는 자원 고갈 문제를 서킷 브레이커를 활용해서 제어할 수 있을 것 같음