调用GetMetadata时禁用自动主题创建

时间:2019-01-20 20:14:45

标签: go apache-kafka confluent-kafka

我正在为我的Kafka客户使用confluent golang。我使用AdminClient在kafka集群中创建/删除/获取主题。这是我用来初始化AdminClient

的代码
adminClient, err := kafka.NewAdminClient(&kafka.ConfigMap{
    "bootstrap.servers": 127.0.0.1:9092,
})

之后,我使用此类在kafka集群中创建和获取所有主题。这是用于创建主题的代码:

ctx, cancel := context.WithCancel(context.Background())
defer cancel()

results, err := adminClient.CreateTopics(
    ctx,
    []kafka.TopicSpecification{{
        Topic:             topic,
        NumPartitions:     numPartitions,
        ReplicationFactor: replicationFactor}},
    kafka.SetAdminOperationTimeout(TimeOut),
)

之后,我再次获得主题信息:

result, err := adminClient.GetMetadata(&topic, false, 1000)

问题是:如果我得到以前不存在的主题,kafka将自动创建该主题。这是我不想要的行为。请告诉我如何解决此问题。

1 个答案:

答案 0 :(得分:5)

要禁用自动创建主题,您应该更新代理配置以将auto.create.topics.enable设置为false。看一下the docs或这个page