我们有一个生产Kafka集群,该集群最近受到一堆新话题的污染。 Kafka群集具有以下设置:

auto.create.topics.enable=false
delete.topic.enable=false


经过调查,我发现这些主题是由使用KafkaStream的createTopic方法的客户团队创建的:
org.apache.kafka.streams.integration.utils.EmbeddedKafkaCluster#createTopic(java.lang.String, int, int)

这是否意味着KafkaStream的主题创建不会通过auto.create.topics.enable的服务器端代理设置进行?这是否意味着createTopic*方法不算作自动主题创建?如果是这样,我们如何才能阻止客户团队以编程方式在Kafka集群上创建主题?

编辑:kafka集群正在运行10.1.1,而客户端正在为kafka和Kafka-Stream运行1.0.0

最佳答案

仅当客户端尝试从不存在的主题读取/写入(或查询不存在的主题的元数据)时,配置auto.create.topics.enable才适用。

Kafka Streams确实使用CreateTopic请求显式创建主题,因此auto.create.topics.enable不适用。

您可以为集群设置一些ACL,以控制谁可以创建主题:https://kafka.apache.org/0101/documentation.html#security_authz


注意:如果不允许使用Kafka Streams的团队创建新主题,则会使他们很难使用Kafka Streams。如果没有这些主题,Kafka Streams就无法运行,并且您需要手动创建这些主题(使用正确的配置),以免破坏Kafka Streams应用程序。

09-27 15:12