Topic에 메시지를 읽어 들인다.
여러 개의 Consumer들로 구성된 경우
어떤 브로커의 파티션에서 메시지를 읽어들일지전략적
(Key)으로 결정모든 Consumer들은 단 하나의 Consumer Group에 소속되어야 하며,
Consumer Group은 1개 이상의 Consumer를 가질 수 있다.파티션의 레코드들은 단 하나의 Consumer에만 할당된다.
Kafka Topic에 저장된 데이터를 가져오는 애플리케이션, 서버
저장된 데이터를 가져오는 행위를
Read
읽는다고 부르기도 하고
Subscribe
구독한다고도 한다.
Consumer는 Broker로부터 메시지를 요청하고,
Broker는 해당 Consumer에게 메시지를 전송한다.
메시지 큐와 다르다.
Consumer가 원하는 만큼 Kafka Broker에게 요청
하나의 Topic에 대해
서로 다른 애플리케이션이 각자의 데이터를 가져와서 읽을 수 있다.
메시지가 삭제되지 않기 때문에 가능하다.
Consumer Offset
이라는 Topic에,
각 애플리케이션들이 어디까지 읽었는지 저장
하나 이상의 Consumer들이 Groupd을 이룰 수 있다.
Consumer Group 형태의 애플리케이션과 Kafka의
Handshake
관리를 위해,
Kafka 측의 Coordinator와 Consumer Group의 Leader가 선출되어야 한다.
- 프로세스를 시작하는 첫 번째 Consumer는 자동으로 Consumer Group에서 Leader로 선출된다.
Consumer가 Consumer Group에 가입하기 위해,
Consumer Group을 생성 혹은 가입하기 위해,
Kafka 측의 Coordinator를 찾아야한다.
Coordinator를 찾으면,
Join Group 요청을 보낸다.Coordinator는 Group의 Leader와 메타데이터를 내보낸다.
Rebalancing 작업의 트리거
Consumer가 추가/제거되거나 "Sync Group" 요청이 전송되면 Consumer Group의 모든 Consumer는 업데이트된 파티션 할당을 받게 된다.
Rebalancing은 Consumer의 소유권을 재조정하는 일
Rebalancing이 발생한 Consumer Group 내의 모든 Consumer들은
읽기 작업이 모두 중단된다.
Rebalancing은 Consumer의 멤버 변화는 물론 파티션 수가 증가할 때도 발생한다.
Consumer, Partition의 추가가 필요하면,
충분한 고려 후 동작해야 한다.
Consumer Group내의 각 Consumer는 주기적으로
Heartbeat
신호를 Coordinator에게 보낸다.
Topic의 최신 Offset과 Consumer Offset 간의 차이
earliest
latest
none
fetch.mln.bytes
에 의해 설정된 데이터보다 적은 경우