Kafka 프로듀서 주요옵션
필수 옵션
-
java 라이브러리 기준
bootstrap.server
: 프로듀서가 데이터를 전송할 대상 카프카 클러스터에 속한 브로커의 호스트 이름:포트 1개 이상 작성한다. 2개 이상 브로커 정보를 입력하여 일부 브로커에 이슈가 발생하더라도 접속하는데에 이슈가 없도록 설정 가능하다.key.serializer
: 레코드의 메세지 키를 직렬화 하는 클래스를 지정한다.value.serializer
: 레코드의 메세지 값을 직렬화 하는 클래스를 지정한다.- string serializer 로 되어있지 않으면 kafka-console-consumer(기본)로 보지 못할 수 있는 경우가 생길 수 있다.
- 네크워크나 디스크 사용량에서 조금 불리할 수도 있지만 웬만해서 특수한 경우가 아닌경우에 String serializer로 하면 운영상 이점이 있다.
선택 옵션
acks
: 프로듀서가 전송한 데이터가 브로커들에 정상적으로 저장되었는지 전송 성공 여부를 확인하는 데에 사용하는 옵션이다. 0, 1, -1(all) 중 하나로 설정할 수 있다. (기본값 : 1)- 1 : 데이터가 리더 팔로워에 정상적으로 저장되었는지 확인
linger.ms
: 배치를 전송하기 전가지 기다리는 최소 시간이다. (기본값 : 0)retries
: 브로커로부터 에러를 받고 난 뒤 재전송을 시도하는 횟수를 지정한다. (기본값 : 2147483647)max.in.flight.requests.per.connection
: 한 번에 요청하는 최대 커넥션 개수. 설정된 값만큼 동시에 전달 요청을 수행한다. (기본값 : 5)- 데이터 처리량이 많을 때 튜닝 포인트가 된다.
partitioner.class
: 레코드를 파티션에 전송할 때 적용하는 파티셔너 클래스를 지정한다. (기본 값 : org.apache.kafka.clients.producer.internals.DefaultPartitioner)enable.idempotence
: 멱등성 프로듀서로 동작할 지 여부를 설정한다. (기본값 : false)- 3 버전에서는 기본값이 true이다. (2.5대에서는 false)
transactional.id
: 프로듀서가 레코드를 전솔할 때 레코드를 트랜잭션 단위로 묶을 지 여부를 설정한다. (기본값 : null)- id 를 지정하면 enable.idempotence 설정이 자동으로 true가 된다.
Comments