Kafka에서 Message 보관 주기를 설정할 수 있습니다.
기본은 7일이지만 상황에 따라 그보다 짧거나 길게 설정하기도 합니다.
보관 주기는 log.retention.{ms|minutes|hours}
으로 지정할 수 있습니다.
log.retention.ms=1000 //1초 log.retention.minutes=1 //1분 log.retention.hours=1 //1시간
기본은 Broker 단위로 설정되어 있습니다.
$KAFKA_HOME/config/server.properties
파일에서 수정할 수 있습니다.
log.retention.hours=168 //보관 주기는 기본 7일 log.retention.check.interval.ms=300000 //보관 주기 체크는 기본 5분
Topic 단위로도 설정할 수 있습니다.
아래는 Topic 보관 주기를 5분으로 설정했습니다.
./bin/kafka-configs.sh --alter --bootstrap-server localhost:9098 --command-config ./config/client.properties --entity-type topics --entity-name test-message --add-config retention.ms=300000
Broker와 Topic에 보관 주기가 동시에 설정되어 있으면, Topic 설정을 우선합니다.
그래서 Broker 기본 값이 7일이지만, Topic 설정을 따라서 5분으로 보관 주기가 설정됩니다.
다음으로 보관 주기 체크입니다.
Topic에서 보관 주기를 1분으로 설정하더라도, 보관 주기 체크 값이 5분이기 때문에 보관 주기는 5분이 됩니다.
Topic 보관 주기를 1분으로 하고 싶다면, 보관 주기 체크 값 역시 1분 이내로 낮춰야 합니다.
즉 log.retention.ms >= log.retention.check.interval.ms
설정해야 원하는 보관 주기로 실행할 수 있습니다.
log.retention.bytes
은 로그 파일의 최소 용량입니다.
기본은 -1로 제한이 없습니다.
만약 보관 주기 시간이 안됐더라도, 최소 용량을 초과하면 로그는 바로 삭제됩니다.