OUTBOX

Outbox 패턴

업무 데이터와 발행할 메시지를 같은 DB 트랜잭션에 기록하고, 별도 relay가 메시지를 전달한다.

로컬 원자성
비동기 발행
at-least-once 대비
1Business write주문 상태와 Outbox row를 같은 트랜잭션으로 저장
2CommitDB 안에서는 업무 변경과 메시지 기록이 함께 확정
3Relay미발행 row를 읽어 브로커에 전송하고 상태 갱신
4Consumer중복 전달 가능성을 멱등 처리로 흡수

핵심: Outbox는 DB와 브로커를 하나의 2PC로 묶지 않고, 재시도 가능한 발행 기록을 남기는 패턴이다.