是否总是必须为 kafka 流手动创建输出主题?

Does output topic always have to be manually created for kafka stream?

KStream<String, String> kstream = builder.stream("input-topic");
kstream.to("output-topic");

“输入主题”已创建。 我没有创建“输出主题”,似乎“Kstream”为我创建了一个以及其他内部主题。此外,在“to”函数的 javadoc 中看到了这个 指定的主题应该在使用之前手动创建(即,在 Kafka Streams 应用程序启动之前

所以我的问题是我们是否总是必须手动创建“输出主题”?

默认情况下,kafka broker 配置 auto.create.topics.enable 设置为 true,允许客户端尝试 produce/consume 从未知主题创建它并开始他们的进程。在 Kafka 中,最佳做法是在对主题进行任何操作之前显式创建主题。这是为了确保您不会无意中创建过多的主题,并确保主题设置正确 partition/replication-factor 计数。因此,为什么文档声明 - 应该在使用前手动创建`。

答案是否定的,我们不必总是手动创建主题,尤其是在本地环境中工作/玩耍时。

注意:如果主题是动态创建的(即在 consumer/producer 启动时),partition/replication-factor 会设置为您设置的内容进入 server.properties 文件。