offset.retention.minutes
(브로커 설정)
기본값으로 카프카는 7일의 retention 기간이 설정되어 있다.
컨슈머가 7일 넘게 정지되어 있다면 읽으려는 오프셋이 무효화된다.
auto.offset.reset
=
heartbeat.interval.ms
기본값 3초
지정한 시간 간격으로 컨슈머가 작동 중이라는 신호를 보낸다.
대개 session.timeout.ms의 1/3로 설정한다.
session.timeout.ms
Kafka 3.0 이상부터는 기본값 45초, 미만은 10초
이 시간동안 heartbeat가 전송되지 않으면, 컨슈머가 죽은 것으로 간주한다.
낮게 설정한다면 컨슈머 리밸런스를 빨리 시작할 수 있다.
max.poll.interval.ms
기본값 5분
컨슈머가 사용중이 아닌 것으로 간주할 때 까지 두번의 poll 사이의 시간 설정
컨슈머가 지속적으로 heartbeat 만 보내고 실제로 메시지를 가져가지 않는 경우가 있을 수 있다.
이럴 때 해당 컨슈머가 특정한 파티션을 무한정으로 해당 파티션을 점유할 수 없도록 주기적으로 poll 을 호출하지 않으면 장애라고 판단한다. 이후 컨슈머 그룹에서 제외한 후, 동일 컨슈머 그룹 내의 다른 컨슈머가 해당 파티션에서 메시지를 들고 갈 수 있도록 한다.
max.poll.records
기본값 500
요청 당 한 번에 가져올 레코드 개수
메시지 크기가 큰 경우 줄인다. 레코드 처리 시간이 오래 걸릴 수 있기 때문이다.
fetch.min.bytes
기본값 1
데이터가 최소 1byte가 되지 않으면 필요없다라고 해석하자.
요청 당 카프카에서 가져올 최소 데이터 개수
이 값을 높이면 레이턴시를 대가로 요청 수를 낮추어 처리량을 높일 수 있다.
fetch.max.wait.ms
기본값 500
fetch.min.bytes를 충족할 용량이 되지 않았을 때 최대로 기다리는 시간을 지정
max.partition.fetch.bytes
기본값 1MB
서버가 반환할 파티션당 데이터의 최대 양
100개 파티션이라면, 100MB의 램이 필요
fetch.max.bytes
기본값 55MB
각 fetch 요청에서 리턴할 데이터의 최대 양