Kafka:从Java禁用创建主题

时间:2019-03-01 14:13:12

标签: java apache-kafka kafka-topic

将Kafka与Java库一起使用,我想禁用主题的自动创建(如果尚不存在)。

某些网站说我应该将auto.create.topics.enable设置为false,但这在Java中无法识别。

15:11:56.962 [main] WARN  o.a.k.c.consumer.ConsumerConfig -  The configuration 'auto.create.topics.enable' was supplied but isn't a known config.

当前,我将其作为环境变量放入docker-compose:

KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'

这可行,但是我想由用户从Java进行管理。

这可能吗?

2 个答案:

答案 0 :(得分:1)

它是代理级别的配置。您不能让用户从Java客户端程序中进行管理。

由于auto.create.topics.enable属性是只读代理配置,因此需要重新启动kafka服务。因此,不可能从客户端进行处理。

您可以在此处使用动态更新模式阅读配置:https://kafka.apache.org/documentation/#brokerconfigs

答案 1 :(得分:0)

Spring具有spring.cloud.stream.kafka.binder.autoCreateTopics属性,该属性默认为true,并且独立于Broker属性auto.create.topics.enable起作用。我猜这只有在您的Broker配置允许客户端创建主题时才有效。阻止该权限可能比依赖客户端的行为更安全。

https://cloud.spring.io/spring-cloud-stream-binder-kafka/spring-cloud-stream-binder-kafka.html