不要坚持主题卡夫卡

Dont persist topic Kafka

我有一个 Kafka 的用例,我不需要服务器上 运行 的一些主题的日志,一些主题发送 lot 的消息,而其他的就不多了。

目前我看到的唯一 "fix" 是设置了一个相当宽松的保留策略。

我想保留服务器上其他一些主题的日志和持久信息,这些主题对我来说可能更重要。

我有什么选择?

理想情况下,我想按主题丢弃日志和存储的消息。

您可以设置每个主题的保留策略,是的。

这是一个使用 kafka-topics 的例子:

kafka-topics.sh --zookeeper localhost:2181 \
                --alter \
                --topic MyTopic \
                --config retention.ms=1000

可以在每个主题的基础上设置保留设置。您可以在创建时执行此操作,也可以在创建后更改主题配置。您可以在 Kafka's website.

上找到主题配置的完整列表

对于您不需要保留数据的主题,设置将频繁删除数据的保留限制。

另一方面,对于您需要保留数据的主题,设置保留限制以将数据保留更长时间。

例如创建主题时设置主题配置(保留时间=24小时):

kafka-topics.sh --zookeeper <ZK> --create --topic --partitions 1 --replication-factor 1 --config retention.ms=86400000

要更新现有主题:

kafka-configs.sh --zookeeper <ZK> --entity-type topics --entity-name <TOPIC> --alter --add-config retention.ms=86400000