Ejemplo n.º 1
0
        static void Main()
        {
            try
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(Topic);
                Console.ForegroundColor = ConsoleColor.White;

                var options = new KafkaOptions(new Uri("http://localhost:9092"))
                {
                    Log = new ConsoleLog()
                };

                var brokerRouter = new BrokerRouter(options);
                _brokerRoute = brokerRouter.SelectBrokerRoute(Topic);
                List <Topic>     topics          = brokerRouter.GetTopicMetadata(Topic);
                OffsetPosition[] offsetPositions = OffsetFetchRequest(topics.First().Partitions.Select(p => new OffsetFetch
                {
                    Topic       = Topic,
                    PartitionId = p.PartitionId
                })).Select(o => new OffsetPosition {
                    Offset = o.Offset + 1, PartitionId = o.PartitionId
                }).ToArray();
                StartConsumer(offsetPositions);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                ConsoleLog.WaitOnKeys();
            }
        }
Ejemplo n.º 2
0
        public async Task BrokerRouterUsesFactoryToAddNewBrokers()
        {
            var router = new BrokerRouter(new Uri("http://localhost:1"), _connectionFactory);

            _connection
            .SendAsync(Arg.Any <IRequest <MetadataResponse> >(), Arg.Any <CancellationToken>(), Arg.Any <IRequestContext>())
            .Returns(_ => BrokerRouterProxy.CreateMetadataResponseWithMultipleBrokers());
            await router.GetTopicMetadataAsync(TestTopic, CancellationToken.None);

            var topics = router.GetTopicMetadata(TestTopic);

            _connectionFactory.Received()
            .Create(Arg.Is <Endpoint>(e => e.IP.Port == 2), Arg.Any <IConnectionConfiguration>(), Arg.Any <ILog>());
        }
Ejemplo n.º 3
0
        public void BrokerRouterUsesFactoryToAddNewBrokers()
        {
            var router = new BrokerRouter(new KafkaNet.Model.KafkaOptions
            {
                KafkaServerUri = new List <Uri> {
                    new Uri("http://localhost:1")
                },
                KafkaConnectionFactory = _factoryMock.Object
            });

            _connMock1.Setup(x => x.SendAsync(It.IsAny <IKafkaRequest <MetadataResponse> >()))
            .Returns(() => Task.Factory.StartNew(() => new List <MetadataResponse> {
                CreateMetaResponse()
            }));

            var topics = router.GetTopicMetadata(TestTopic);

            _factoryMock.Verify(x => x.Create(It.Is <Uri>(uri => uri.Port == 2), It.IsAny <int>(), It.IsAny <IKafkaLog>()), Times.Once());
        }
        public void BrokerRouterUsesFactoryToAddNewBrokers()
        {
            var router = new BrokerRouter(new KafkaOptions
            {
                KafkaServerUri = new List <Uri> {
                    new Uri("http://localhost:1")
                },
                KafkaConnectionFactory = _mockKafkaConnectionFactory.Object
            });

            _mockKafkaConnection1.Setup(x => x.SendAsync(It.IsAny <IKafkaRequest <MetadataResponse> >()))
            .Returns(() => Task.Run(() => new List <MetadataResponse> {
                CreateMetaResponse()
            }));

            var topics = router.GetTopicMetadata(TestTopic);

            _mockKafkaConnectionFactory.Verify(x => x.Create(It.Is <KafkaEndpoint>(e => e.Endpoint.Port == 2), It.IsAny <TimeSpan>(), It.IsAny <IKafkaLog>(), null), Times.Once());
        }
Ejemplo n.º 5
0
        private async Task AddFileToKafka(byte[] filename, byte[] message, string topic)
        {
            KafkaOptions options = new KafkaOptions(new Uri("http://sandbox.hortonworks.com:6667"));

            using (BrokerRouter router = new BrokerRouter(options))
                using (Producer client = new Producer(router))
                {
                    var topicMetas = router.GetTopicMetadata(topic);

                    var responses = await client.SendMessageAsync(topic,
                                                                  new[] {
                        new KafkaNet.Protocol.Message
                        {
                            Key   = filename,
                            Value = message
                        }
                    });

                    ProduceResponse response = responses.FirstOrDefault();
                    MessageBox.Show(String.Format("File added to the queue - partition {0} offset {1}",
                                                  response.PartitionId,
                                                  response.Offset));
                }
        }