Confluent пока не предоставляют API для создания темы из клиента dot net, однако для этого есть обходной путь.
Набор auto.create.topics.enable = true
в конфигурации kafka
используйте var brokerMetadata = producer.GetMetadata(false, topicName);
для запроса доступных тем в существующих брокерах, если указанная тема
недоступно, тогда kafka создаст тему с указанным именем.
private static bool CreateTopicIfNotExist(Producer producer, string topicName)
{
bool isTopicExist = producer.GetMetadata().Topics.Any(t => t.Topic == topicName);
if (!isTopicExist)
{
//Creates topic if it is not exist; Only in case of auto.create.topics.enable = true is set into kafka configuration
var topicMetadata = producer.GetMetadata(false, topicName).Topics.FirstOrDefault();
if (topicMetadata != null && (topicMetadata.Error.Code != ErrorCode.UnknownTopicOrPart || topicMetadata.Error.Code == ErrorCode.Local_UnknownTopic))
isTopicExist = true;
}
return isTopicExist;
}
Таким образом, вы можете использовать эту работу вокруг, я знаю, что это грязное решение, но, похоже, на данный момент другого пути нет.