我有一个 Kafka 主题,它接收很多消息。他们中的许多人都有相同的密钥,我只对最新消息感兴趣。环顾这个主题似乎非常适合配置
log.cleanup.policy=compact
。
我可以通过添加/更改配置来更改现有的 Kafka 主题配置吗
log.cleanup.policy=compact
或者我必须创建一个新主题?
我尝试创建一个新主题:
bin/kafka-topics.sh --create --topic compactedPricing \
--partitions 1 --replication-factor 1 \
--config cleanup.policy=compact \
--config min.cleanable.dirty.ratio=0.001 \
--config segment.ms=5000 \
--bootstrap-server localhost:9094
但我收到以下错误:
[2022-10-25 16:01:40,114] ERROR org.apache.kafka.common.errors.TopicAuthorizationException: Authorization failed.
那么,是否需要有特殊的授权?
无论如何,我该怎么做?
显然较新版本不再支持使用 --alter 更改主题配置:
--alter 改变分区数量和 副本分配。更新 现有主题的配置 不再支持通过 --alter 此处(kafka-configs CLI >支持使用 --bootstrap-server 选项更改主题配置)。
我设法更改此配置的唯一方法是删除主题并重新创建它:
kafka-topics.sh --create --config cleanup.policy=compact --topic connect-offsets --bootstrap-server kafka-01:9092
我使用的是kafka 3.6.1。要将清理策略从紧凑恢复为删除,我使用的是:
kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic --alter --delete-config cleanup.policy