Ejemplo n.º 1
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri = kafkaServerUri.ToList();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     ResponseTimeoutMs = DefaultResponseTimeout;
 }
Ejemplo n.º 2
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri    = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs      = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
 }
        public void RoundRobinShouldHandleMultiThreadedRollOver()
        {
            var selector = new DefaultPartitionSelector();
            var bag      = new ConcurrentBag <Partition>();

            Parallel.For(0, 100, x => bag.Add(selector.Select(_topicA, null)));

            Assert.That(bag.Count(x => x.PartitionId == 0), Is.EqualTo(50));
            Assert.That(bag.Count(x => x.PartitionId == 1), Is.EqualTo(50));
        }
        public void KeyHashShouldSelectEachPartitionType()
        {
            var selector = new DefaultPartitionSelector();

            var first  = selector.Select(_topicA, CreateKeyForPartition(0));
            var second = selector.Select(_topicA, CreateKeyForPartition(1));

            Assert.That(first.PartitionId, Is.EqualTo(0));
            Assert.That(second.PartitionId, Is.EqualTo(1));
        }
        public void SelectorShouldThrowExceptionWhenPartitionsAreEmpty()
        {
            var selector = new DefaultPartitionSelector();
            var topic    = new Topic
            {
                Name       = "emptyPartition",
                Partitions = new List <Partition>()
            };

            selector.Select(topic, CreateKeyForPartition(1));
        }
Ejemplo n.º 6
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri    = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs      = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
     CacheExpiration        = TimeSpan.FromMilliseconds(DefaultCacheExpirationTimeoutMS);
     RefreshMetadataTimeout = TimeSpan.FromMilliseconds(DefaultRefreshMetadataTimeout);
     MaxRetry = DefaultMaxRetry;
     StatisticsTrackerOptions = new StatisticsTrackerOptions();
 }
        public void RoundRobinShouldRollOver()
        {
            var selector = new DefaultPartitionSelector();

            var first  = selector.Select(_topicA, null);
            var second = selector.Select(_topicA, null);
            var third  = selector.Select(_topicA, null);

            Assert.That(first.PartitionId, Is.EqualTo(0));
            Assert.That(second.PartitionId, Is.EqualTo(1));
            Assert.That(third.PartitionId, Is.EqualTo(0));
        }
Ejemplo n.º 8
0
 public KafkaOptions(params Uri[] kafkaServerUri)
 {
     KafkaServerUri = kafkaServerUri.ToList();
     PartitionSelector = new DefaultPartitionSelector();
     Log = new DefaultTraceLog();
     KafkaConnectionFactory = new DefaultKafkaConnectionFactory();
     ResponseTimeoutMs = TimeSpan.FromMilliseconds(DefaultResponseTimeout);
     CacheExpiration = TimeSpan.FromMilliseconds(DefaultCacheExpirationTimeoutMS);
     RefreshMetadataTimeout = TimeSpan.FromMilliseconds(DefaultRefreshMetadataTimeout);
     MaxRetry = DefaultMaxRetry;
     StatisticsTrackerOptions = new StatisticsTrackerOptions();
 }
        public void KeyHashShouldThrowExceptionWhenChoosesAPartitionIdThatDoesNotExist()
        {
            var selector = new DefaultPartitionSelector();
            var list     = new List <Partition>(_topicA.Partitions);

            list[1].PartitionId = 999;
            var topic = new Topic
            {
                Name       = "badPartition",
                Partitions = list
            };

            selector.Select(topic, CreateKeyForPartition(1));
        }
        public void RoundRobinShouldTrackEachTopicSeparately()
        {
            var selector = new DefaultPartitionSelector();

            var a1 = selector.Select(_topicA, null);
            var b1 = selector.Select(_topicB, null);
            var a2 = selector.Select(_topicA, null);
            var b2 = selector.Select(_topicB, null);

            Assert.That(a1.PartitionId, Is.EqualTo(0));
            Assert.That(a2.PartitionId, Is.EqualTo(1));

            Assert.That(b1.PartitionId, Is.EqualTo(0));
            Assert.That(b2.PartitionId, Is.EqualTo(1));
        }
        public void RoundRobinShouldEvenlyDistributeAcrossManyPartitions()
        {
            const int TotalPartitions = 100;
            var       selector        = new DefaultPartitionSelector();
            var       partitions      = new List <Partition>();

            for (int i = 0; i < TotalPartitions; i++)
            {
                partitions.Add(new Partition {
                    LeaderId = i, PartitionId = i
                });
            }
            var topic = new Topic {
                Name = "a", Partitions = partitions
            };

            var bag = new ConcurrentBag <Partition>();

            Parallel.For(0, TotalPartitions * 3, x => bag.Add(selector.Select(topic, null)));

            var eachPartitionHasThree = bag.GroupBy(x => x.PartitionId).Count();

            Assert.That(eachPartitionHasThree, Is.EqualTo(TotalPartitions), "Each partition should have received three selections.");
        }