Kafka 이벤트 계약은 topic 이름만이 아니다. 파티션 키, consumer group, 멱등성, offset, retry까지 같이 정해야 운영할 수 있다.
이벤트 이름과 순서
event
명령이 아니라 이미 일어난 사실을 과거형으로 발행한다.
partition
순서가 필요한 aggregate는 같은 key로 같은 파티션에 보낸다.
소비 책임
group
같은 consumer group은 파티션을 나눠 처리하고, 다른 group은 독립적으로 읽는다.
handler
NestJS @EventPattern에서 멱등성과 실패 처리를 담당한다.
실패 이후
offset
처리 성공 뒤 commit해야 장애 후 누락과 중복을 추적할 수 있다.
retry
일시 실패는 재시도하고, 계속 실패하면 DLQ나 별도 로그로 격리한다.
핵심: Producer는 ClientKafka.emit으로 사실을 발행하고, Consumer는 같은 계약으로 중복과 재처리를 막는다.