작성
·
5
·
수정됨
0
안녕하세요.
consumer.poll 관련해서 궁금한 점이 생겨 질문드립니다.
일단 가정으로
데이터 있으면 기다리지 않고 값을 반환한다고 하셨는데, 이 부분이 이해가 가지 않습니다.
처음에 직관적으로 poll이 데이터를 가져오는 주기라고 생각했습니다.
하지만 설명을 듣고 시간을 지정하는게 의미가 있나? 하는 생각이 들었습니다.
그 후 존재 이유를 poll 시간 이유 -> heart beat를 위한 것인가?로 생각했지만
heart beat 는 다른 스레드에서 동작하기 때문에 이도 아니라고 생각했습니다.
제 생각으로는 추론할 수 없어서 poll에 시간을 지정하는 이유가 무엇인지 설명해주시면 감사하겠습니다.
그리고, 추가 질문 2개가 더 있습니다.
추가 질문 1.
카프카는 왜 지연해서 poll하는 기능을 지원하지 않는지 궁금합니다.
카프카 철학 때문인건지 아니면 기술적 제한떄문인건지 궁금합니다.
추가 질문 2.
heart beat thread는 만약 여러 토픽과 토픽 내에서도 여러 그룹 아이디로 구독하고 있다 했을 때 어떻게 동작을 하는지 궁금합니다.
A, B 토픽 존재하고
A 토픽에 1 2 3 그룹 아이디 / B 토픽 ㄱ 그룹 아이디 존재한다 했을 때
heart beat thread가 3 + 1인 4개 생성되는게 맞는지 궁금합니다.
항상 좋은 강의 감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. HAHA님.
Kafka의 consumer.poll()
메서드는 데이터가 존재할 때 즉시 사용할 수 있게 해주며, 그렇지 않을 경우 대기 시간 내에 데이터를 기다렸다가 반환하게 됩니다. 이때 poll
메서드에 시간을 지정하는 주된 이유는 Consumer가 데이터를 기다릴 수 있는 최대 시간을 설정하기 위함입니다. 이는 간접적으로 Heartbeat와도 관련이 있습니다. Consumer가 broker와의 연결을 유지하는 데 있어 Heartbeat는 중요한 역할을 하고 있습니다. poll
호출이 주기적으로 이루어지지 않으면 세션 타임아웃이 발생할 수 있기 때문에, poll
메서드는 이러한 타임아웃을 피하기 위해 자주 호출되어야 합니다.
추가 질문에 대한 답변으로, Kafka가 지연해서 poll
하는 기능을 지원하지 않는 이유는 Kafka의 설계 철학과 효율성 때문일 수 있습니다. Kafka는 실시간성을 보장하기 위한 목적으로 설계되었으며, poll
작업 지연은 메시지 처리를 방해할 수 있습니다.
Kafka에 대한 일반적인 이해를 돕기 위해 다음 게시물에서 추가 정보를 확인할 수 있습니다:
- Kafka Consumer 데이터 유실 관련
- 동기 Commit과 ConsumerNetworkClient의 Poll() 관련 질문드립니다!
관심을 가져주셔서 감사합니다. 추가적인 질문이 있으시면 언제든지 알려주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.