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

Consumer의 auto.offset.reset

webmaster 2025. 10. 6. 23:14
728x90

auto.offset.reset

  • Consumer가 Topic에 처음 접속하여 메시지를 가져올 때 가장 오래된 처음 offset (earliest)부터 가져올 것인지, 가장 최근인 마지막 offset(latest) 이후부터 가져올 것인지를 설정하는 파라미터
  • auto.offset.reset = 처음 offset(earliest)부터 읽음
  • auto.offset.reset = 처음 offset(earliest) 부터 읽음
  • 동일 Consumer Group으로 Consumer가 새롭게 접속할 시, __consumer_offsets에 있는 offset 정보를 기반으로 메시지를 가져오기 때문에 earliest로 설정하여도, 0번 offset부터 읽어 들이지 않음
  • Consumer Group의 Consumer가 모두 종료되어도, Consumer Group이 읽어들인 offset 정보는 7일 동안 __consumer_offsets에 저장되어 있다(offsets.retention.minutes)
  • 해당 Topic이 삭제되고 재생성될 경우에는 해당 Topic에 대한 Consumer Group의 offset 정보는 0으로 __consumer_offsets으로 기록된다.

실습하기

1. 기존 Topic 삭제 후 생성

kafka-topics --bootstrap-server localhost:9092 --delete --topic simple-topic
kafka-topics --bootstrap-server localhost:9092 --create --topic simple-topic

2. Producer 생성 후 메시지 전송

kafka-console-producer --bootstrap-server localhost:9092 --topic simple-topic
> a
> b
> c

3. Application을 실행하여, offset 정보를 확인한다.

  • 이떄는 Topic이 지워졌기 때문에 __consumer_offsets 정보가 없다.
    • auto.offset.reset = ealiest 일 경우 0번부터 읽는다.
    • auto.offset.reset = latest(기본값)일 경우 마지막 offset부터 읽는다.

 

728x90