当生产者通过禁用主题的自动创建向不存在的主题发出事件时会发生什么?

Mar*_*oma 1 apache-kafka

我已经看到了这部分文档(来源):

让我们创建一个名为"test"的主题,它只包含一个分区,只有一个副本:

$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Run Code Online (Sandbox Code Playgroud)

如果我们运行list topic命令,我们现在可以看到该主题:

$ bin/kafka-topics.sh --list --zookeeper localhost:2181
test
Run Code Online (Sandbox Code Playgroud)

或者,您可以将代理配置为在发布不存在的主题时自动创建主题,而不是手动创建主题.

我不清楚如果未启用主题的自动创建会发生什么,但生产者会向不存在的主题发出事件.它取决于客户/图书馆吗?什么是典型的结果?

(在代码示例的情况下,我更喜欢Python)

ppa*_*rno 5

当Kafka客户端(生产者或消费者)连接到引导服务器时,它首先做的是元数据请求:它要求提供有关它想要生成或使用的主题分区的信息.如果auto.create.topics.enable禁用,则会出现UNKNOWN_TOPIC_OR_PARTITION错误,无法"使用"该主题.如果您尝试运行该kafka-console-producer工具,例如,您将获得以下内容:

[2018-12-28 08:59:37,669] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 1 : {my_topic=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2018-12-28 08:59:37,768] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {my_topic=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2018-12-28 08:59:37,869] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 4 : {my_topic=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2018-12-28 08:59:37,971] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 5 : {my_topic=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[2018-12-28 08:59:38,073] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 6 : {my_topic=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
Run Code Online (Sandbox Code Playgroud)

这意味着Kafka客户端甚至不会发出这样的事件,但在此之前就会抛出错误,因为元数据请求会提前失败.