Programming/Kafka

[kafka] Consumer Connection Config

bisi 2020. 4. 22. 12:17

Consumer Connection Config 

 

bootstrap.servers 

  • Type: list
  • Default: ""
  • Valid Values: non-null string
  • Importance: high
  • 카프카 클러스터에 처음 연결을 하기 위한 호스트와 포트 정보로 구성된 리스트 정보. 

 

fetch.min.bytes

  • Type: int
  • Default: 1
  • Valid Values: [0,...]
  • Importance: high
  • 한번에 가져올 수 있는 최소 데이터 사이즈. 
  • 만약 지정된 사이즈 보다 작은 경우, 요청에 응답하지 않고 데이터가 누적될 때까지 기다림. 

group.id 

  • Type: string
  • Default: null
  • Valid Values:
  • Importance: high
  • 컨슈머가 속한 컨슈머 그룹을 식별하는 식별자 

 

enable.auto.commit 

  • Type: boolean
  • Default: true
  • Valid Values:
  • Importance: medium
  • 백그라운드로 주기적으로 오프셋을 커밋 

 

auto.offset.reset 

  • Type: string
  • Default: latest
  • Valid Values: [latest, earliest, none]
  • Importance: medium
  • 카프카에서 초기 오프셋이 없거나 현재 오프셋이 더 이상 존재하지 않은 경우(데이터가 삭제)에 다음 옵션으로 리셋함. 
  • earliest : 가장 초기의 오프셋 값으로 설정 
  • latest : 가장 마지막의 오프셋 값으로 설정 
  • none : 이전 오프셋값을 찾지 못하며 에러를 나타냄. 

 

fetch.max.bytes 

  • Type: int
  • Default: 52428800
  • Valid Values: [0,...]
  • Importance: medium
  • 한번에 가져올 수 있는 최대 데이터 사이즈 

 

request.timeout.ms 

  • Type: int
  • Default: 30000
  • Valid Values: [0,...]
  • Importance: medium
  • 요청에 대해 응답을 기다리는 최대 시간 

 

session.timeout.ms 

  • Type: int
  • Default: 10000
  • Valid Values:
  • Importance: high
  • 컨슈머와 브로커사이의 세션 타임 아웃 시간. 브로커가 살아있는것으로 판단하는시간(기본값 10초) 만약 컨슈머가 그룹코디네이터에게 하트비트를 보내지 않고 session.timeout.ms이 지나면 해당 컨슈머는 종료되거나 장애가 발생하는 것으로 판단한고 컨슈머 그룹은 리밸런스 시도. 
  • heartbeat.timeout.ms 옵션과 밀접한 관련이 있음. 두 옵션 동시에 수정. 
  • session.timeout.ms를 기본값보다 낮게 설정하면 실패를 빨리 감지하지만 가비지 컬렉션이나 poll루프를 완료하는 시간이 길어지게 되면 원하지 않게 리밸러스 발생할수 있음. 
  • session.timeout.ms를 기본값보다 높게 설정하면 오류감지 하는데 오랜 시간이 걸리지만, 리밸런스 발생가능성 줄어듬. 

 

heartbeat.interval.ms 

  • Type: int
  • Default: 3000
  • Valid Values:
  • Importance: high
  • 그룹코디네이터에게 얼마나 자주 kafkaconsumer poll() 메소드로 하트비트를 보낼 것인지 조정.
  • session.timeout.ms과 동시에 수정.  
  • session.timeout.ms값보다 낮아야 함. 
  • 기본값은 3초이지만 일반적으로 session.timeout.ms값의 1/3정도로 설정. 

 

max.poll.records0 

  • Type: int
  • Default: 500
  • Valid Values: [1,...]
  • Importance: medium
  • 단일 호출 poll()에 대한 최대 레코드 수를 조정.  
  • 어플리케이션의 폴링 루프에서 데이터 양을 조정 

 

max.poll.interval.ms 

  • Type: int
  • Default: 300000
  • Valid Values: [1,...]
  • Importance: medium
  • 컨슈머가 살아 있는지를 체크하기 위해 하트비트를 주기적으로 보내는데, 컨슈머가 계속해서 하트비트만 보내고 실제로 메세지를 가져가지 않는 경우가 있을수도 있음.이런 경우 컨슈머가 무한정으로 해당 파티션을 점유할 수 없도록 주기적으로 poll을 호출하지 않으면 장애라고 판단하고 컨슈머 그룹에서 제외한 후 다른 컨슈머가 해당 파티션에서 메시지를 가져갈 수 있게함. 

 

auto.commit.interval.ms 

  • Type: int
  • Default: 5000
  • Valid Values: [0,...]
  • Importance: low
  • 주기적으로 오프셋을 커밋하는 시간 

 

fetch.max.wait.ms 

  • Type: int
  • Default: 500
  • Valid Values: [0,...]
  • Importance: low
  • fetch.min.bytes에 의해 설정도니 데이터 보다 적은 경우 요청에 응답을 기다리는 최대 시간.

 

참고 사이트 : https://kafka.apache.org/documentation/#consumerconfigs

참고 문헌 : 카프카, 데이터 플랫폼의 최강자 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지

'Programming > Kafka' 카테고리의 다른 글

[kafka] 자주 사용하는카프카 명령어  (2) 2020.04.23
[Kafka] No jmx port but jmx polling enabled  (0) 2020.04.21
[kafka] Consumer 주요 기능  (0) 2020.04.21