[Kafka] 카프카 컨슈머 옵션

Options

bootstrap.servers

카프카 클러스터는 클러스터 마스터라는 개념이 없기 때문에 모든 서버가 클라이언트의 요청을 받을 수 있다. 이 옵션은 카프카 클러스터에 처음 연결을 위한 호스트와 포트정보로 구성된 리스트 정보이다. 호스트는 카프카 클러스터 전체를 입력하기를 권장한다. 일부만 입력했을 경우 해당 브로커가 다운되면 접속이 불가능하기 때문이다.

fetch.min.bytes

한번에 가져올 수 있는 최소 데이터 사이즈이다. 만약 지정한 사이즈보다 작은 경우 요청에 대해 응답하지 않고 데이터가 누적될 때 까지 기다린다.

group.id

컨슈머가 속한 컨슈머 그룹을 식별하는 식별자이다.

enable.auto.commit

백그라운드로 주기적으로 오프셋을 커밋한다. 기본값은 5초이다.

auto.offset.reset

카프카에서 초기 오프셋이 없거나 현재 오프셋이 더이상 존재하지 않는 경우 다음 옵션으로 리셋한다

  1. earliest : 가장 초기의 오프셋값으로 설정
  2. latest : 가장 마지막의 오프셋값으로 설정
  3. none : 이전 오프셋값을 찾지 못하면 에러를 나타냄

fetch.max.bytes

한번에 가져올 수 있는 최대 데이터 사이즈이다.

request.timeout.ms

요청에 대해 응답을 기다리는 최대 시간

session.timeout.ms

컨슈머와 브로커 사이의 세션 타임아웃 시간을 지정하는 옵션이다. 기본값은 10초이다. 컨슈머가 코디네이터에게 하트비트를 보내지 않고 타임아웃이 지나면 해당 컨슈머는 장애가 발생한것으로 판단하고 컨슈머 그룹의 리벨런스를 시도한다. 즉 위 옵션은 하트비트 없이 얼마나 오랫동안 컨슈머가 있을 수 있는가와 관련된 옵션이다. 너무 낮게 설정하면 실패를 빨리 감지하지만 GC같은 작업으로 인해 지연된 경우 리벨런스가 일어나기도 한다. 너무 높게 설정하면 리벨런스는 적게 일어나겠지만 오류 감지에 시간이 너무 늦어지기도 한다.

heartbeat.interval.ms

그룹 코디네이터에게 얼마나 자주 poll() 메소드로 하트비트를 보낼 것인지 설정하는 옵션이다. 기본값은 3초이다.

max.poll.records

단일 호출 poll에 대한 최대 레코드 수를 정하는 옵션이다.

max.poll.interval.ms

일정 주기동안 poll을 호출하지 않은 컨슈머를 걸러내기 위한 옵션이다. 컨슈머가 하트비트 메세지만 전송하고 poll을 통한 메세지를 가져가지 않는 경우 해당 파티션을 무한정 점유하기 때문에 해당 값이 넘어선다면 컨슈머 그룹에서 해당 컨슈머를 제외시킨다.

auto.commit.interval.ms

주기적으로 오프셋을 커밋하는 시간 지정 옵션이다.

fetch.max.wait.ms

fetch.min.bytes에 설정된 데이터보다 적은 경우 응답을 기다리는 최대 시간을 지정하는 옵션이다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/15/kafka/consumer_options/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.