📌 기존의 성공 예상 시나리오:
- order-server: 주문 생성 (DB insert)
→ Kafka로OrderAfterCreate이벤트 발행
- hub-server:
OrderAfterCreate구독
→ 허브 간 경로 알고리즘 + 예상 소요시간 계산
→ Kafka로HubRouteAfterCreate이벤트 발행
- delivery-server:
HubRouteAfterCreate구독
→HubRouteAfterCreate에 들어있는 order/hub/firm 정보 + 예상 소요시간 기반 HubDelivery/FirmDelivery 생성
📌 실패 시 보상 예상 시나리오:
주문은 생성되어 위의 플로우를 다 돌았는데, 나중에 결제 실패 혹은 유저가 주문 취소해서 orderStatus가 FAILED 또는 CANCELED로 바뀔 때
- order-server: orderStatus FAILED/CANCELED로 변경
→OrderStatusChanged이벤트 발행
- delivery-server:
OrderStatusChanged구독
→ 이미 생성된 HubDelivery/FirmDelivery 취소 처리
< 각 이벤트 역할 >
OrderAfterCreate → 배송 “생성용” 메시지
OrderStatusChangedV1 → 배송 “보상/취소용” 메시지
보상 트랜잭션용 추가 이벤트가 발행되어야 한다.