afterCommit callback
짧은 local cache 무효화처럼 유실을 허용할 때만 사용한다.
commit 뒤 process crash와 callback 실패를 견뎌야 하는 효과는 DB transaction에 outbox intent를 포함하고 별도 worker가 재시도해야 한다.
짧은 local cache 무효화처럼 유실을 허용할 때만 사용한다.
업무 변경과 전송 의도를 같은 DB commit에 넣는다.
broker·email·HTTP 호출을 transaction thread 밖에서 수행한다.
message ID로 중복 전달과 process 재시작을 견딘다.
두 row가 함께 commit된다.
미전송 의도를 반복 조회하고 전달한다.
성공 기록 뒤 같은 message의 중복을 무해하게 만든다.
핵심: afterCommit은 호출 시점만 보장할 뿐 실행 완료를 저장하지 않으므로 전달 보장은 durable state에서 시작해야 한다.