Kafka配置:如何选择策略永久保留主题所有消息?
正确配置:设置
log.cleaner.enable=false 好问题!咱们先把这两个配置的作用拆解开,再结合你的需求判断:
log.cleanup.policy=compact不符合需求
这个配置是开启日志压缩策略,它的核心逻辑是只保留每个key的最新一条消息,同key的旧记录会被自动清理掉。这显然和你“永久保留所有消息、不删除任何记录”的目标相悖——它还是会删除部分数据,只是删除的是重复key的旧版本,所以直接排除这个选项。log.cleaner.enable=false才是正确选择
Kafka的日志清理功能(不管是默认的delete策略,还是compact压缩策略)都是由这个开关统一控制的。当你把它设为false时,整个日志清理器会被禁用,默认的基于时间/大小删除旧日志的逻辑也会完全停止工作。这样一来,你的主题里的所有消息都会一直保留在磁盘上,完全满足你“不删除任何记录”的需求。
另外针对你的Kafka版本(kafka_2.10-0.10.0.1)补充一点:这个配置在该版本中是完全生效的,放心用。如果你只想针对这个单分区主题生效,记得用主题级别的配置修改命令,而不是改全局配置:
kafka-topics.sh --alter --zookeeper <你的ZooKeeper地址> --topic <你的主题名> --config log.cleaner.enable=false
内容的提问来源于stack exchange,提问作者DaliMidou
相关产品推荐
相关产品推荐

