如何为 Kafka 主题设置 cleanup.policy '删除' 和 '压缩'?

问题描述 投票:0回答:3

Kafka主题cleanup.policy配置的描述是

“删除”或“紧凑”或两者兼而有之的字符串。 [...]

我想知道如何设置这两个值。我无法让它工作。尝试以这种方式更改配置没有达到预期的效果:

c:\Progs\kafka_2.12-2.2.0\bin\windows>kafka-configs.bat --zookeeper <...> --entity-type topics --entity-name MyTopic --alter --add-config cleanup.policy=[delete, compact]
Completed Updating config for entity: topic 'MyTopic'.

c:\Progs\kafka_2.12-2.2.0\bin\windows>kafka-configs.bat --zookeeper <...> --entity-type topics --entity-name MyTopic --describe
Configs for topic 'MyTopic' are cleanup.policy=delete,segment.ms=300000,retention.ms=86400000

这种方式也行不通:

c:\Progs\kafka_2.12-2.2.0\bin\windows>kafka-configs.bat --zookeeper <...> --entity-type topics --entity-name MyTopic --alter --add-config "cleanup.policy=delete compact"
Error while executing config command with args '--zookeeper <...> --entity-type topics --entity-name MyTopic --alter --add-config cleanup.policy=delete compact'
org.apache.kafka.common.config.ConfigException: Invalid value delete compact for configuration cleanup.policy: String must be one of: compact, delete
        at org.apache.kafka.common.config.ConfigDef$ValidString.ensureValid(ConfigDef.java:931)
        at org.apache.kafka.common.config.ConfigDef$ValidList.ensureValid(ConfigDef.java:907)
        at org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:480)
        at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:464)
        at kafka.log.LogConfig$.validate(LogConfig.scala:305)
        at kafka.zk.AdminZkClient.validateTopicConfig(AdminZkClient.scala:319)
        at kafka.zk.AdminZkClient.changeTopicConfig(AdminZkClient.scala:331)
        at kafka.zk.AdminZkClient.changeConfigs(AdminZkClient.scala:268)
        at kafka.admin.ConfigCommand$.alterConfig(ConfigCommand.scala:152)
        at kafka.admin.ConfigCommand$.processCommandWithZk(ConfigCommand.scala:103)
        at kafka.admin.ConfigCommand$.main(ConfigCommand.scala:80)
        at kafka.admin.ConfigCommand.main(ConfigCommand.scala)
apache-kafka
3个回答
7
投票

我让它工作了

--add-config cleanup.policy='[compact,delete]'

5
投票

应该是

cleanup.policy=[delete,compact]
而不是
cleanup.policy=[delete, compact]
。逗号后面没有空格。


0
投票

我正在使用卡夫卡

3.6.1
。要将清理策略从
compact
恢复为
delete
,我使用的是:

kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic --alter --delete-config cleanup.policy
© www.soinside.com 2019 - 2024. All rights reserved.