728x90

- fetcher는 Linked Queue 데이터를 가지고 오지만, Linked Queue에 데이터가 없을 경우 ConsumerNetworkClient에서 브로커로부터 데이터를 가지고 온다.
관련 주요 파라미터

- fetch.min.bytes
- fetcher가 record들을 읽어들이는 최소 bytes.
- 브로커는 지정된 fetch.min.bytes 이상의 새로운 메시지가 쌓일 때까지 전송을 하지 않는다.(기본: 1 bytes)
- fetch.max.wait.ms
- 브로커에 fetch.min.bytes 이상의 메시지가 쌓일 때까지 최대 대기 시간(기본: 500ms)
- poll()과의 차이 : poll()는 데이터가 없는 상황에서의 대기 시간이고, 해당 파라미터는 데이터가 있는 상황에서 대기하는 것이다.
- fetch.max.bytes
- fetcher가 한번에 가져올 수 있는 최대 데이터 bytes.(기본 = 50MB)
- max.partition.fetch.bytes
- fetcher가 파티션별 한 번에 최대로 가져올 수 있는 bytes(기본 = 1MB)
- max.poll.records
- fetcher가 한번에 가져올 수 있는 레코드 수(기본은 500)
- Linked Queue에서 가지고 올 수 있는 최대 개수
관련 주요 파라미터 상세 정리
fetch.min.bytes = 16384
fetch.max.wait.ms = 500
fetch.max.bytes = 52428800
max.partition.fetch.bytes=1024168
max.poll.records = 500
- 가져올 데이터가 한건도 없으면, poll() 인자 시간만큼 대기 후 return
- 가져와야 할 과거 데이터가 많을 경우 max.partition.fetch.bytes로 배치 크기 설정.
- 그렇지 않다면 fetch.min.bytes로 배치 크기 설정
- 가장 최신의 offset 데이터를 가져오고 있다면, fetch.min.bytes만큼 가져와 리턴하고, fet.min.bytes만큼 쌓이지 않는다면 fetch.max.wait.ms만큼 기다린 후 리턴
- 오랜 과거의 offset 데이터를 가져온다면, 최대 max.partition.fetch.bytes만큼 파티션에서 읽은 뒤 반환
- max.partition.fetch.bytes에 도달하지 못하여도 가장 최신의 offset에 도달하면 반환
- topic에 파티션이 많아도 가져오는 데이터 양은 fetch.max.bytes로 제한
- fetcher가 linked Queue에서 가져오는 레코드의 개수는 max.poll.records로 제한
728x90
'카프카 > Java 기반 카프카 클라이언트 구현, Consumer 내부 메커니즘 1' 카테고리의 다른 글
| Consumer의 auto.offset.reset (0) | 2025.10.06 |
|---|---|
| Consumer의 읽기 Commit 이해 (0) | 2025.10.06 |
| wakeup을 이용한 Consumer 효과적 종료 (0) | 2025.10.06 |
| KafkaConsumer 주요 구성 요소와 Poll() 메소드 (0) | 2025.10.06 |
| Consumer 주요 메커니즘 (0) | 2025.10.06 |