在 Kafka 配置中选择正确的清理策略

Dal*_*dou 7 apache-kafka

我正在使用 kafka_2.10-0.10.0.1。我创建了 1 个分区的主题。我知道默认的清理策略是“删除”。我想一直保留主题中的所有记录(不删除任何记录)。什么是正确的方法:使“log.cleaner.enable=false”或“log.cleanup.policy=compact”?谢谢你

Dmi*_*sky 7

主题具有代理范围的配置,默认情况下适用于任何没有配置的主题,但主题也可以具有覆盖或补充代理范围主题配置的特定于主题的配置。

代理范围的主题配置在您的service.properties文件中设置。特定主题的配置是使用bin/kafka-topics.sh脚本设置的,或者AdminClient如果您使用的是 Java。

与您相关的代理范围配置是log.retention.ms,等效的特定主题配置是retention.ms. 如果您设置log.retention.ms-1,则所有没有此retention.ms配置的主题将具有无限保留期。同样,如果您-1针对retention.ms特定主题进行设置,它将具有无限的保留期。

要设置retention.ms新主题:

bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name
  --partitions 20 --replication-factor 3 --config retention.ms=-1
Run Code Online (Sandbox Code Playgroud)

您还可以修改现有主题以设置retention.ms-1

> bin/kafka-configs.sh --zookeeper zk_host:port/chroot --entity-type topics --entity-name my_topic_name --alter --add-config retention.ms=-1
Run Code Online (Sandbox Code Playgroud)

在此处查看特定于主题的配置的完整列表:https : //kafka.apache.org/documentation/#topicconfigs以及有关主题操作​​的更多信息:https : //kafka.apache.org/documentation/#basic_ops