我们有一个生产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
答案 0 :(得分:3)
配置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应用程序。