public FetcherTest() { this.cluster = new Cluster(Configs.Select(c => new Broker(c.BrokerId, "localhost", c.Port))); this.topicInfos = this.Configs.Select( c => new PartitionTopicInfo( this.topic, 0, this.queue, new AtomicLong(0), new AtomicLong(0), new AtomicInteger(0), string.Empty)) .ToList(); AdminUtils.CreateOrUpdateTopicPartitionAssignmentPathInZK( this.ZkClient, this.topic, new Dictionary<int, List<int>> { { 0, new List<int> { Configs.First().BrokerId } } }, new Dictionary<string, string>()); TestUtils.WaitUntilLeaderIsElectedOrChanged(this.ZkClient, this.topic, 0, 500); this.fetcher = new ConsumerFetcherManager("consumer1", new ConsumerConfig(string.Empty, 1234, string.Empty), ZkClient); this.fetcher.StopConnections(); this.fetcher.StartConnections(this.topicInfos, this.cluster); }
public void StartConnections(List<PartitionTopicInfo> topicInfos, Cluster cluster) { this.leaderFinderThread = new LeaderFinderThread(this, this.consumerIdString + "-leader-finder-thread"); this.leaderFinderThread.Start(); [email protected](); try { this.partitionMap = topicInfos.ToDictionary(x => new TopicAndPartition(x.Topic, x.PartitionId), x => x); this.cluster = cluster; var noLeaders = topicInfos.Select(x => new TopicAndPartition(x.Topic, x.PartitionId)).ToList(); foreach (var noLeader in noLeaders) { this.NoLeaderPartitionSet.Add(noLeader); } this.cond.SignalAll(); } finally { [email protected](); } }
public static Cluster GetCluster(ZkClient zkClient) { var cluster = new Cluster(); var nodes = GetChildrenParentMayNotExist(zkClient, BrokerIdsPath); foreach (var node in nodes) { var brokerZkString = ReadData(zkClient, BrokerIdsPath + "/" + node).Item1; cluster.Add(Broker.CreateBroker(int.Parse(node), brokerZkString)); } return cluster; }