Пример #1
0
        public async Task TestSimpleConsumerWorksOk()
        {
            var keySerializer      = new NullSerializer <object>();
            var valueSerializer    = new StringSerializer();
            var messagePartitioner = new LoadBalancedPartitioner <object>();

            using (var temporaryTopic = testCluster.CreateTemporaryTopic())
                using (var brokers = new KafkaBrokers(testCluster.CreateBrokerUris()))
                {
                    var topic    = temporaryTopic.Name;
                    var producer = KafkaProducer.Create(brokers, keySerializer, valueSerializer, messagePartitioner);
                    var consumer = KafkaConsumer.Create(defaultConsumerGroup, brokers, keySerializer, valueSerializer,
                                                        new TopicSelector {
                        Partition = 0, Topic = topic
                    });

                    await producer.SendAsync(KeyedMessage.Create(topic, "Message"), CancellationToken.None);

                    var responses = await consumer.ReceiveAsync(CancellationToken.None);

                    Assert.That(responses, Is.Not.Null);
                    Assert.That(responses, Has.Count.EqualTo(1));

                    var first = responses.First();
                    Assert.That(first.Key, Is.Null);
                    Assert.That(first.Offset, Is.EqualTo(0));
                    Assert.That(first.Partition, Is.EqualTo(0));
                    Assert.That(first.Topic, Is.EqualTo(topic));
                    Assert.That(first.Value, Is.EqualTo("Message"));
                }
        }
Пример #2
0
        public async Task TestSimpleConsumerWorksOk()
        {
            var keySerializer = new NullSerializer<object>();
            var valueSerializer = new StringSerializer();
            var messagePartitioner = new LoadBalancedPartitioner<object>();
            using (var temporaryTopic = testCluster.CreateTemporaryTopic())
            using (var brokers = new KafkaBrokers(testCluster.CreateBrokerUris()))
            {
                var topic = temporaryTopic.Name;
                var producer = KafkaProducer.Create(brokers, keySerializer, valueSerializer, messagePartitioner);
                var consumer = KafkaConsumer.Create(defaultConsumerGroup, brokers, keySerializer, valueSerializer, 
                    new TopicSelector { Partition = 0, Topic = topic });

                await producer.SendAsync(KeyedMessage.Create(topic, "Message"), CancellationToken.None);

                var responses = await consumer.ReceiveAsync(CancellationToken.None);
                Assert.That(responses, Is.Not.Null);
                Assert.That(responses, Has.Count.EqualTo(1));

                var first = responses.First();
                Assert.That(first.Key, Is.Null);
                Assert.That(first.Offset, Is.EqualTo(0));
                Assert.That(first.Partition, Is.EqualTo(0));
                Assert.That(first.Topic, Is.EqualTo(topic));
                Assert.That(first.Value, Is.EqualTo("Message"));
            }
        }
Пример #3
0
 public void TestLoadBalancedPartitioner(object objectToTest, int numberOfPartitions)
 {
     var partitioner = new LoadBalancedPartitioner<object>();
     var expected = 0;
     for (var i = 0; i < numberOfPartitions * 2; i++ )
     {
         var result = partitioner.CalculatePartition(objectToTest, numberOfPartitions);
         Assert.That(result, Is.EqualTo(expected));
         expected = (expected + 1) % numberOfPartitions;
     }
 }
Пример #4
0
        public void TestLoadBalancedPartitioner(object objectToTest, int numberOfPartitions)
        {
            var partitioner = new LoadBalancedPartitioner <object>();
            var expected    = 0;

            for (var i = 0; i < numberOfPartitions * 2; i++)
            {
                var result = partitioner.CalculatePartition(objectToTest, numberOfPartitions);
                Assert.That(result, Is.EqualTo(expected));
                expected = (expected + 1) % numberOfPartitions;
            }
        }