본문 바로가기
카프카

카프카 프로듀서와 컨슈머

by 정재익 2026. 4. 2.

프로듀서

메시지를 발행하는 주체
메시지 발행시 대부분 비동기 방식으로 동작 (스프링 카프카)
카프카는 기본적으로 라운드 로빈으로 토픽안에 파티션에 분산 저장한다. 따라서 프로듀서는 해당부분을 신경 쓸 필요가 없다.
 

컨슈머

카프카 브로커로부터 메시지를 구독하여 가져오는 주체다.
 

컨슈머 그룹

같은 그룹ID를 가진 컨슈머들이 하나의 그룹을 이루어 하나 이상의 토픽을 함께 구독하는 논리적 단위
 
한 컨슈머 그룹 내의 여러 컨슈머는 토픽의 파티션을 나누어 점유. 이 때, 컨슈머가 여러개 있더라도 딱 한번만 메시지를 가져간다.
예를들어 주문서버에서 발행된 메시지를 상품서버에서 재고처리를 할 때 트래픽에 따라 상품서버가 여러대가 있다.
여러대의 서버를 같은 그룹 ID로 묶어서 파티션을 분담할 수 있다.
 
여러 컨슈머 그룹이 한 토픽을 구독하면 독립적으로 파티션 점유. 이 때, 메시지는 여러 컨슈머 그룹에 공유된다.
예를들어 주문서버에서 발행된 메시지를 상품서버, 주문통계서버, 알림서버에서 소비할 때 각 서버는 같은 메시지를 각각 소비해야하므로 다른 그룹 ID로 설정한다.
 

offset

토픽의 메시지의 순서를 나타내는 고유한 번호다
커밋이란 메시지를 읽어서 처리했다는 것을 확정짓는 행위다.
컨슈머그룹에서 메시지를 정상 수신 후 처리하면 오프셋을 커밋하며 오프셋의 값을 이동시킨다.
각 컨슈머그룹에서 내가 어디까지 메시지를 읽었는지 기록하는 숫자 값이다.
 
오토커밋을 설정할 수 있다. 이 때, 에러가 발생해도 offset을 이동한다.
로그같은 가벼운 처리는 true로 설정한다. 스프링 카프카의 기본 값은 true다
중요한 데이터는 false로 처리해야한다. 이 때는 수동으로 커밋처리를 해야한다.
 
자동초기화 옵션 : 새로운 컨슈머 그룹이 처음 토픽을 구독할 때, 기존에 저장된 오프셋 정보가 없으면 어디서 부터 메시지를 읽을지를 결정하는 옵션
 
auto-offset-rest=earliest 설정은 토픽 내 가장 오래된 메시지부터 읽는다. 새로운 컨슈머그룹이 이전 메시지를 읽어야하는 경우에 설정하며 과거의 로그도 분석해야하는 로그분석서버등에 쓰인다.
 
auto-offset-rest=latest는 디폴트 설정이며 토픽 내 들어오는 새 메시지부터 읽는다. 새로운 컨슈머그룹이 서버 실행 이후 최신의 메시지만 읽어야 하는 경우에 설정한다. 알림서버등에 쓰인다.
 

'카프카' 카테고리의 다른 글

카프카 클러스터  (0) 2026.04.02
카프카의 특징  (0) 2026.04.02