카프카 컨슈머 오프셋 리셋하기
- 컨슈머 오프셋을 가끔씩 커밋하면 오프셋이 마지막으로 커밋된 곳에서 읽기를 다시 시작할 수 있다.
- 오프셋 재설정 하고 콘솔 컨슈머를 다시 시작하고 결과를 확인해본다.
오프셋 재설정 후 콘솔 컨슈머 다시 시작하고 결과 확인
# 특정 생성된 컨슈머 그룹 확인 ( 그룹명으로 조회 )
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는 훨씬 더 많은 정보를 얻을 수 있고, 매우 구체적으로 어떤 일이 일어나는지 알 수 있고, 더 빠른 속도로 반복할 수 있어서 좋다.