您可以启用集群范围的配置auto.create.topics.enable。
如果新的生产者尝试向尚不存在的主题发送数据,这将自动创建一个主题。
但是,请注意以下事项:
- 将使用复制、分区数和保留的默认设置创建主题。确保根据需要更改这些默认设置。无论如何,所有自动创建的主题都将具有相同的配置。
- 生产者代码中主题名称配置中的拼写错误可能会导致不必要的主题创建。
或者,您可以使用 AdminClient API。此处显示了一个示例:
static async Task CreateTopicAsync(string bootstrapServers, string topicName) { using (var adminClient = new AdminClientBuilder(new AdminClientConfig { BootstrapServers = bootstrapServers }).Build()) { try { await adminClient.CreateTopicsAsync(new TopicSpecification[] { new TopicSpecification { Name = topicName, ReplicationFactor = 1, NumPartitions = 1 } }); } catch (CreateTopicsException e) { Console.WriteLine($"An error occured creating topic {e.Results[0].Topic}: {e.Results[0].Error.Reason}"); } } }