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: DomainEventPublisher interface (marketflow 도메인)
  • infrastructure/kafka: KafkaDomainEventPublisherKafkaTemplate로 발행
  • 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가 생성된다
  • 발행 실패 시 예외가 호출부로 전파된다 (호출부가 로그·알림 처리)