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

이무님의 프로필 이미지
이무

작성한 질문수

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

Consumer에서 토픽 특정 파티션의 특정 offset 부터 읽어오기 구현 실습

동일 groupId에서 하나의 컨슈머에 특정 파티션을 지정하는 경우

작성

·

122

0

안녕하세요,

 

동일 groupId를 가진 두 개의 컨슈머가 하나의 토픽에 대해 poll을 하는데, 컨슈머 중 하나는 0번 파티션을 읽도록 assign하였고 나머지 컨슈머는 그냥 토픽에 대해 subscribe를 하였습니다.

 

그런데 0번 파티션에 assign한 컨슈머는 데이터를 읽어오지 못하고 아래와 같은 에러 로그가 발생하였는데요

 

Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member

 

이 경우는 어떻게 해석하는게 좋을까요?

 

답변 1

0

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

안녕하십니까,

동일 Group id에 속하는 consumer들은 특정 토픽내의 파티션을 서로 배타적으로 읽어야 합니다. 두개의 consumer가 동일 파티션을 읽어서는 안됩니다. 강의에서도 말씀드리지만 consumer offset 관리는 단일 파티션에 대해서 Consumer Group id 별로 기록됩니다.

따라서 동일 Group id내 consumer a가 특정 파티션 0번만 읽도록 먼저 설정하더라도 나중에 consumer b 가 topic내 모든 파티션을 읽도록 설정한다면 consumer rebalance가 일어나서 기존 consumer a는 더 이상 파티션 0을 읽지 못하게 됩니다.

감사합니다.

이무님의 프로필 이미지
이무

작성한 질문수

질문하기