orders
주문 row 생성
비즈니스 상태 변경이 먼저 DB에 반영됩니다.
Outbox의 핵심은 즉시 발행이 아니라, 나중에 relay가 다시 집어 갈 수 있는 pending 상태를 DB 안에 확정해 두는 것입니다.
비즈니스 상태 변경이 먼저 DB에 반영됩니다.
아직 브로커로 나가진 않았지만, 발행해야 할 이벤트는 이미 같은 커밋 안에 기록됩니다.
외부 발행은 트랜잭션 밖으로 분리되지만, 시작점은 항상 DB 안에 남은 outbox row입니다.
한 번 저장된 같은 row를 기준으로 성공과 실패가 갈립니다.
브로커 전송이 끝나면 같은 outbox row를 sent로 갱신합니다. 이후 중복 발행 대상에서 빠집니다.
전송 실패나 타임아웃이 나도 row를 지우지 않습니다. pending 상태가 남아 다음 poll에서 다시 시도할 수 있습니다.