인프런 커뮤니티 질문&답변

정성훈님의 프로필 이미지
정성훈

작성한 질문수

카프카 완벽 가이드 - 코어편

Consumer와 auto.offset.reset의 내부 동작 메커니즘 상세 이해

콘솔에서 컨슈머 생성

작성

·

241

0

  1. 토픽을 구독하는 컨슈머를 콘솔에서 생성하면, 생성하는 컨슈머마다 항상 새로운 그룹이 만들어지게 되는거고 해당 토픽에 내부 파티션인 __consumer_offset가 생성된 컨슈머의 수만큼 만들어지는게 맞나요?

  2. 자바의 KafkaConsumer 를 사용할때 이미 존재하는 컨슈머 그룹에 참여한다면, 토픽에는 해당 컨슈머 그룹에 대한 정보인 __consumer_offset이 이미 존재하고 컨슈머에서 이 값을 읽어오니 earlist로 설정해도 0번 인덱스 레코드부터 읽는게 아닌 __consumer_offset에서 offset 값을 그대로 읽어와 사용하는게 맞나요?

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

  1. "__consumer_offset가 생성된 컨슈머의 수만큼 만들어지는게 맞나요" 라는 질문을 이해하지 못했습니다. 뭐가 만들어 지는데 좀더 자세한 설명 부탁드립니다만,,,

    먼저 개괄적으로 말씀드리면
    __consumer_offsets 내부 topic은 Consumer Group만 기록하지, Consumer는 기록하지 않습니다. Consumer의 subscribe, poll, commit 로직에 대한 강의 영상을 다시 한번 들으시면 좋을 것 같습니다.

    그리고 말씀하신대로 console에서 consumer를 생성하면 무조건 새로운 consumer group을 생성합니다.

 

  1. 네, 맞습니다. auto.offset.reset=earliest는 해당 consumer group 이 읽는 토픽이 __consumer_offset에 없을 때 해당 topic의 처음 부터 읽을 것을 지정하는 것입니다. 만약 해당 consumer_group이 __consumer_offsets에 읽으려는 topic의 offset이 기록되어 있으면 auto.offset.reset 여부와 관계없이 __consumer_offsets에 있는 offset 이후 부터 읽어 들이게 됩니다.

     

감사합니다.

 

정성훈님의 프로필 이미지
정성훈

작성한 질문수

질문하기