STK10-12 Kafka 이벤트 계약·토픽·발행 인프라
작업 내용
수집 완료 이벤트의 계약·토픽·발행 인프라를 마련한다. 후행(STK10-08 발행, STK10-13 소비)이 공유하는 선행 병목이다. otelpoc Kafka 설정 패턴을 재사용한다.
- 이벤트 계약:
MarketFlowCollectedEvent(data class, payload = baseDate) — JSON serde,trusted.packages설정 - 토픽:
marketflow.collected.v1+ DLQ 토픽 생성 (docker-compose/설정) - domain:
DomainEventPublisherinterface (marketflow 도메인) - infrastructure/kafka:
KafkaDomainEventPublisher—KafkaTemplate로 발행 - producer 설정 (
MarketFlowKafkaConfig또는 공통 설정 재사용)
be-code-convention 준수: ConsumerRecord<String,String> 금지(DTO 매핑), ObjectMapper 수동 파싱 금지.
다이어그램
처리 흐름
sequenceDiagram participant UC as CollectMarketFlowUseCase participant Pub as DomainEventPublisher participant Kafka as KafkaDomainEventPublisher participant Topic as marketflow.collected.v1 UC->>Pub: publish(MarketFlowCollectedEvent(baseDate)) Pub->>Kafka: send Kafka->>Topic: produce
클래스 의존
flowchart LR Kafka[KafkaDomainEventPublisher] -.implements.-> Pub[DomainEventPublisher] Kafka --> Template[KafkaTemplate] Template --> Topic[marketflow.collected.v1]
테스트 케이스
MarketFlowCollectedEvent가 JSON으로 직렬화·역직렬화된다KafkaDomainEventPublisher가 토픽으로 이벤트를 발행한다 (TestContainers Kafka)- 토픽·DLQ가 생성된다
- 발행 실패 시 예외가 호출부로 전파된다 (호출부가 로그·알림 처리)