KStream<String, String> kstream = builder.stream("input-topic");
kstream.to("output-topic");
"input-topic"已被创建。我没有创建"output-topic"。似乎"Kstream"为我和其他内部主题创建了一个。同样,在"to"的javadoc中也看到了这一点。function指定的主题应该在使用之前手动创建(即,在Kafka Streams应用程序启动之前)
所以我的问题是,我们总是需要手动创建"output-topic"吗?
默认情况下,kafka broker configauto.create.topics.enable
被设置为true,允许尝试从未知主题生产/消费的客户端创建它并开始他们的过程。在Kafka中,最佳实践是在对主题进行任何操作之前显式创建主题。这是为了确保您不会无意中创建主题溢出,并确保主题设置为正确的分区/复制因子计数。因此,为什么文档声明-应该在使用之前手动创建"。
答案是否定的,我们并不总是需要手动创建主题,特别是在本地环境中工作/玩耍时。
注意:如果主题是动态创建的(即在消费者/生产者启动时),则分区/复制因子被设置为您在server.properties
文件中获得的内容。