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