是否有方法使用confluent.kafka.net客户端查询主题的复制因子和保留时间?

bnlyeluc  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(560)

confluent.kafka adminclient允许您创建一个主题,指定名称、分区数、复制因子和保留(我猜通过configs属性还可以进行其他设置)。但是,getmetadata()调用返回的topicmetadata上只包含名称和分区信息。有没有办法使用.net客户端检索复制因子和保留时间?

await adminClient.CreateTopicsAsync(new[]
                    {
                        new TopicSpecification
                        {
                            Name = topicName,
                            NumPartitions = _connectionSettings.TopicAutoCreatePartitionCount,
                            ReplicationFactor = _connectionSettings.TopicAutoCreatePartitionCount,
                            Configs = new Dictionary<string, string> {{"retention.ms", "9999999999999"}}
                        }
                    });
polkgigr

polkgigr1#

以获得可以使用的保留时间 DescribeConfigsAsync :

var results = await adminClient.DescribeConfigsAsync(new[] { new ConfigResource { Name = "topic_name", Type = ResourceType.Topic } });

foreach (var result in results)
{
    var retentionConfig = result.Entries.SingleOrDefault(e => e.Key == "retention.ms");
}

但我不确定获取复制因子的正确方法是什么,因为它不是用 DescribedConfigsAsync . 我能想到的一个方法就是 GetMetadata 但这不是一个非常干净的解决方案:

var meta = adminClient.GetMetadata(TimeSpan.FromSeconds(5));
var topic = meta.Topics.SingleOrDefault(t => t.Topic == "topic_name");
var replicationFactor = topic.Partitions.First().Replicas.Length;

相关问题