1. 프로듀서 API


1.1 프로듀서 API

카프카 데이터 시작점은 프로듀서이다. 프로듀서는 데이터를 직렬화하여 리더 브로커의 특정 토픽 파티션에 전송한다.

카프카 프로듀서 프로젝트 생성

카프카 라이브러리로 간단하게 producing 해보는 코드였음

프로듀서 중요 개념

프로듀서는 레코드를 배치 전송한다. 모아두고 특정 사이즈 이상이면 브로커로 전달함으로써 향상된 성능을 꾀한다. 또한 압축을 제공하지만 CPU 사용량과의 트레이드 오프이다. 압축을 진행하면 컨슈머에서도 압축을 풀어야한다. 레코드를 특정 파티션으로 보내는 옵션도 존재한다.

프로듀서 주요 옵션

옵션 설명 필수 여부
bootstrap.servers 프로듀서가 데이터를 전송할 대상 카프카 클러스터의 브로커 주소 필수
key.serializer 메시지 키 직렬화 클래스 필수
value.serializer 메시지 값 직렬화 클래스 필수
acks 0, 1, -1 로 파티션에 어디까지 전송 성공을 성공으로 볼 것인가 옵션
buffer.memory 브로커로 전송할 데이터 배치 버퍼 메모리양 (기본값: 32MB) 옵션
retries 브로커로부터 에러를 받을 때 재전송 시도 횟수 옵션
batch.size 배치로 전송할 레코드 최대 용량 옵션
linger.ms 배치 전송전까지 기다리는 최소 시간 옵션
partitioner.class 레코드를 파티션에 전송할때 적용할 파티셔너 클래스 옵션
enabled.idempotence 멱등성 프로듀서로 동작할지 여부 옵션
transactional.id 레코드 전송 시 레코드를 트랜잭션 단위로 묶을지 옵션

메시지 키를 가진 데이터를 전송하는 프로듀서

같은 메시지 키를 가진 데이터는 같은 파티션에 들어간다. 혹은 파티션 번호를 직접 지정해줄수도 있다.

커스텀 파티셔너를 가지는 프로듀서

Partitioner 인터페이스를 구현하여 커스텀 파티셔너를 등록할 수 있다.

2. 컨슈머 API


컨슈머는 프로듀서가 적재한 데이터를 사용하기 위해 브로커로부터 데이터를 가져와서 처리한다.