1. 개요 (Overview)

우리 프로젝트는 Spring Kafka를 사용하여 서비스 간 비동기 통신을 처리합니다. 복잡한 직렬화/역직렬화 설정은 공통 설정(application.yml)에 의해 자동으로 처리되므로, 개발자는 이벤트 정의, 발행(Send), 수신(Listen) 세 가지 단계만 신경 쓰면 됩니다.

2. 핵심 설정

application.yml에 정의된 주요 설정입니다.

구분 설정 항목 설정값 (Class/Value) 설명 (Why?)
공통 bootstrap-servers localhost:29092 Kafka 브로커 주소입니다. (환경 변수로 주입 - 기본값 localhost:29092)
Producer value-serializer JacksonJsonSerializer 객체(DTO)를 보낼 때 자동으로 JSON 문자열로 변환하여 전송합니다.
Consumer value-deserializer JacksonJsonDeserializer 들어온 JSON 메시지를 자동으로 Java 객체(DTO)로 매핑합니다.
Consumer group-id ${spring.application.name}-group 향후 서비스(모듈)가 쪼개져도 설정 파일 수정 없이 그룹 ID 충돌을 방지합니다.
Consumer auto-offset-reset earliest 서버가 새로 뜨거나 그룹이 바뀌었을 때, 과거에 쌓인 중요한(결제, 경매) 이벤트를 놓치지 않고 다 읽어옵니다.
Listener ack-mode batch 성능 향상을 위해 메시지를 하나씩 처리하지 않고 배치 단위로 처리 후 커밋합니다.

Kafka auto-offset-reset 설정

Kafka의 auto-offset-reset 설정은 “컨슈머 그룹이 처음 생겼거나, 저장된 위치(Offset) 정보가 날아갔을 때 어디서부터 읽을 것인가?"를 결정하는 중요한 옵션입니다.


1. latest (기본값)

"과거는 잊고, 지금부터 들어오는 것만 처리하자!"

2. earliest (우리 설정)

"처음부터 빠짐없이 다 읽자!"

3. 이벤트 발행 (Producer)

이벤트를 보내는 쪽(Producer)의 구현 방법입니다.