public KafkaTopicConsumerWrapper(KafkaClusterConfig config, string topicId, string consumerId)
     : base(config, topicId)
 {
     ConsumerId = consumerId;
     Consumer   = new Lazy <Consumer>(LoadConsumer);
     Tpos       = new Lazy <List <TopicPartitionOffsetError> >(LoadTpos);
 }
Exemple #2
0
        public KafkaTopicWrapper(KafkaClusterConfig config, string topicId)
        {
            Config  = config;
            TopicId = topicId;

            Producer      = new Lazy <Producer>(LoadProducer);
            TopicMetadata = new Lazy <TopicMetadata>(LoadTopicMetadata);
        }
Exemple #3
0
        public BrokerPartition GetBrokerPartition(KafkaClusterConfig kafkaClusterConfig, string bootstrapServers)
        {
            BrokerPartition result;

            using (var producer = kafkaClusterConfig.BuildProducer(bootstrapServers))
            {
                if (producer == null)
                {
                    return(null);
                }

                var metadata          = producer.GetMetadata();
                var partitionInfoList = new List <PartitionInfo>();
                foreach (var topic in metadata.Topics)
                {
                    foreach (var partition in topic.Partitions)
                    {
                        var item = new PartitionInfo
                        {
                            Topic       = topic.Topic,
                            PartitionId = partition.PartitionId,
                            Leader      = partition.Leader,
                            Replicas    = partition.Replicas.OrderBy(r => r).ToArray(),
                            ISRs        = partition.InSyncReplicas.OrderBy(isr => isr).ToArray()
                        };

                        partitionInfoList.Add(item);
                    }
                }

                result = new BrokerPartition {
                    BrokerId = metadata.OriginatingBrokerId, PartitionInfoList = partitionInfoList
                };
            }

            return(result);
        }