4.7. 오프셋 정책 관리
auto.offset.reset 속성을 사용하여 오프셋이 커밋되지 않았거나 커밋된 오프셋이 더 이상 유효하지 않거나 삭제된 경우 소비자 동작 방식을 제어할 수 있습니다.
소비자 애플리케이션을 처음 배포하고 기존 주제에서 메시지를 읽습니다. group.id 가 처음 사용되기 때문에 __consumer_offsets 항목에 이 애플리케이션에 대한 오프셋 정보가 포함되지 않습니다. 새 애플리케이션은 로그 시작부터 기존의 모든 메시지 또는 새 메시지만 처리할 수 있습니다. 기본 재설정 값은 latest 이며, 이는 파티션 끝에 시작되어 결과적으로 일부 메시지가 누락되었음을 의미합니다. 데이터 손실을 피하지만 처리 양을 늘리려면 auto.offset.reset 을 가장 빨리 설정 하여 파티션을 시작할 수 있습니다.
또한 브로커에 대해 구성된 오프셋 보존 기간(offsets.retention.minutes)이 종료될 때 메시지가 손실되는 것을 방지하기 위해 가장 빠른 옵션을 사용하는 것이 좋습니다. 소비자 그룹 또는 독립 실행형 소비자가 보존 기간 동안 오프셋을 사용하지 않는 경우 이전에 커밋한 오프셋은 __consumer_offsets 에서 삭제됩니다.
# ... heartbeat.interval.ms=3000 1 session.timeout.ms=45000 2 auto.offset.reset=earliest 3 # ...
단일 가져오기 요청에 반환된 데이터 양이 크면 소비자가 처리되기 전에 시간 초과가 발생할 수 있습니다. 이 경우 max.partition.fetch.bytes 를 낮추거나 session.timeout.ms 를 늘릴 수 있습니다.