요약 : 분산처리 환경에서 DB의 트랜잭션 기능을 이용해 메시지 발행의 트랜잭션을 보장하는 방법 (?)
서비스에서 도메인DB에 쿼리를 날리고 쿼리가 성공한 뒤 메시지가 발행되는게 보장되어야 할때
1. 도메인 테이블에 쿼리를 날림
2. outbox테이블에 발행할 메시지를 저장 (outbox=임시저장소라고 보면 됨)
3. 위 두개를 하나의 트랜잭션으로 묶음.
4. 별도의 메시지 프로세서가 outbox 테이블에서 메시지를 꺼내 kafka 등의 메시징 시스템으로 전송
참고
1. https://blog.gangnamunni.com/post/transactional-outbox/
2. https://velog.io/@eastperson/Transaction-Outbox-Pattern-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0
3. outbox에서 메시지 폴링하는 패턴 : https://giron.tistory.com/156