카프카/Java 기반 카프카 클라이언트 구현, Consumer 내부 메커니즘 1

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

webmaster 2025. 10. 6. 20:32
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