KafkaStream createTopic 不尊重 Kafka 服务器的 auto.create.topics.enable 设置

pl0*_*l0u 3 apache-kafka apache-kafka-streams

我们有一个生产 Kafka 集群,它最近被一堆新主题污染了。Kafka 集群有以下设置:

auto.create.topics.enable=false
delete.topic.enable=false
Run Code Online (Sandbox Code Playgroud)

经过调查,我发现这些主题是由使用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,客户端运行 1.0.0 Kafka 和 Kafka-Stream

Mat*_*Sax 5

该配置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 应用程序。