728x90
KafkaConsumer 주요 구성 요소와 Poll() 메소드

- ConsumerRecords<K, V> consumerRecords = KafkaConsumer.poll(Duration.ofMills(1000))
- 브로커나 Consumer 내부 Queue에 데이터가 있다면, 바로 데이터를 반환한다.
- 그렇지 않을 경우 1000ms동안 데이터 fetch를 브로커에 계속 수행하고 결과 반환
Poll() 동작 원리

- Linked Queue에 데이터가 있을 경우 Fetcher는 데이터를 가져오고 반환하며, Poll() 수행 완료
- ConsumerNetworkClient는 비동기로 계속 브로커의 메시지를 가져와서 LinkedQueue에 저장
- Linked Queue에 데이터가 없을 경우 1000ms(지정한 시간)까지 브로커에 메시지 요청 후 poll() 수행 완료
- 동작 과정
- 첫번째 요청 시, Linked Queue에 데이터가 없으므로, Topic에 데이터를 최대 1초 동안 대기하면서 Linked Queue로 가지고 옴
- 2번째 요청 시, Linked Queue에 데이터가 있으므로 Fetcher는 데이터를 가져오고 반환(poll() 수행 완료)
- 3번째 요청 시, Linked Queue에 데이터가 있으므로 Fetcher는 데이터를 가져오고 반환(poll() 수행 완료)
728x90
'카프카 > Java 기반 카프카 클라이언트 구현, Consumer 내부 메커니즘 1' 카테고리의 다른 글
| Consumer의 auto.offset.reset (0) | 2025.10.06 |
|---|---|
| Consumer의 읽기 Commit 이해 (0) | 2025.10.06 |
| wakeup을 이용한 Consumer 효과적 종료 (0) | 2025.10.06 |
| Consumer Fetcher 관련 주요 파라미터와 메커니즘 이해 (0) | 2025.10.06 |
| Consumer 주요 메커니즘 (0) | 2025.10.06 |