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

时间:2018-01-29 14:57:43

标签: apache-kafka

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

1 个答案:

答案 0 :(得分:4)

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

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

您的相关代理范围配置为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

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

> bin/kafka-configs.sh --zookeeper zk_host:port/chroot --entity-type topics --entity-name my_topic_name --alter --add-config retentions.ms=-1

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