Producer 의 역할
broker url bootstrap
- producer 에서 1개 이상의 broker 에 연결한다.
- producer 실행시 bootstrapping 하기 위한 1개 이상의 broker url 목록을 제공해야한다.
데이터 직렬화
- kafka 에 데이터를 기록하기 위해 정렬된 바이트 시퀀스 형태로 데이터를 전송
- 모든 메시지 데이터 객체를 바이트 배열로 직렬화
- 응답도 브로커로부터 받은 바이트 시퀀스를 변환
topic partition 결정
- 어떤 partition 으로 데이터가 전송되어야할지 결정하는 역할
- caller 프로그램에 의해 정해진다면 결정하지 않고 보내기도 함
- 그게 아닌 경우는 producer 가 메시지 partition을 선택
- message 데이터 객체의 key 를 사용
- 필요에 따라 사용자 정의 파티셔너 코드를 작성할 수 있음
처리 실패/재시도 기능
- 처리 실패 응답 및 재시도 횟수는 producer 에서 제어해야한다.
- producer API 를 통해 재시도 횟수를 설정
- 예외 처리도 producer 앱 component를 통해 수행
batch 처리
- producer API를 통해 비동기 모드의 사용 여부 제어
- batch 를 통해 입출력 횟수를 줄이고, producer 메모리를 최적화
- 처리 속도는 batch 의 메시지 수예 비례해 증가
API 버전 결정
- leader broker 와 producer 가 지원 가능한 가장 높은 API 버전을 사용하도록 함
- 쓰기 요청시 API 버전을 요청 안에 포함