[Kafka CLI] 6. Kafka Consumer Groups – Reset Offsets

카프카 컨슈머 오프셋 리셋하기

  • 컨슈머 오프셋을 가끔씩 커밋하면 오프셋이 마지막으로 커밋된 곳에서 읽기를 다시 시작할 수 있다.
  • 오프셋 재설정 하고 콘솔 컨슈머를 다시 시작하고 결과를 확인해본다.

오프셋 재설정 후 콘솔 컨슈머 다시 시작하고 결과 확인

# 특정 생성된 컨슈머 그룹 확인 ( 그룹명으로 조회 )
kafka-consumer-groups.sh 
--bootstrap-server [클러스터 위치]
--describe # 확인
--group [그룹명]

# 오프셋을 각 파티션의 시작 부분으로 재설정.
kafka-consumer-groups.sh 
--bootstrap-server [클러스터위치]
--group [그룹명] 
--reset-offsets # 리셋 오프셋 옵션
--to-earliest # 토픽에 존재하는 가장 이른 데이터
--topic [토픽명] 
--*dry*-run #
—reset-offsets—to-earliest—dry-run—execute
오프셋 리셋 옵션offset 의 위치를 특정위치로 되돌리는옵션종류지정한 토픽을 확인할 수 있다. —dry-run을 다시 적용하면 새 오프셋은 0,0,0이 된다.
” 실제 사용하지는 않고 오프셋이 어떤 결과를 가져오는지 확인하는 용도다 ”—dry-run대신 해당을 적용하면 실제로 오프셋 재설정을 실행하게 된다.

offset 의 위치를 특정위치로 되돌리는옵션종류

  • -to-offset : 지정한 오프셋으로 이동 한다.
  • -by-duration : 지정한 시간 간격만큼 오프셋 변경 PT 접두사와 시간간격을 표시하는 ISO 8061 기반 형식으로 지정됨, 예를들어 **‘PT1H’**는 한시간을 의미함
  • -to-datetime : 지정한 날짜와 시간으로 오프셋이 이동된다. ‘yyyy-MM-dd’T’HH:mm:ss.SSS’ 형식으로 지정됨
  • -to-latest: 가장 최신의 오프셋으로 설정됨
  • -to-earliest: 가장 초기의 오프셋으로 설정됨

오프셋이 초기화 된 결과 확인

# 컨슈머의 초기화된 오프셋 결과 확인
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic third_topic --group my-first-application

# 컨슈머 그룹으로 LAG 확인
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-second-application
  • 오프셋을 재설정 했기 때문에 컨슈머로 메세지를 소비해보면 모든 메세지를 읽게 된다.
  • 정상적으로 랙이 제거된 걸 확인할 수 있다.
  • 컨슈머가 실행 중일 때는 재설정할 수 없다
    • 컨슈머는 반드시 중지되어야 한다
    • 어떤 컨슈머도 오프셋을 재설정하는 그룹의 일부가 아니다.
  • 대체로 CLI사용은 복잡하고 기능도 많다. 그래서 오프셋을 재설정할 때는 UI가 선호되기도 한다.
    • UI는 훨씬 더 많은 정보를 얻을 수 있고, 매우 구체적으로 어떤 일이 일어나는지 알 수 있고, 더 빠른 속도로 반복할 수 있어서 좋다.
LIST