예제 #1
0
        static int Main(string[] args)
        {
            string topicName = null;
            const int correlationId = 0;

            if (args.Length < 1)
            {
                Usage();
                return -1;
            }

            string serverAddress = args[0].Split(':')[0];
            int serverPort = Convert.ToInt32(args[0].Split(':')[1]);

            if (args.Length > 1)
                topicName = args[1];

            var connector = new Connector(serverAddress, serverPort);

            MetadataResponse metadataResponse = connector.Metadata(correlationId, "C# KafkaMetadata util", topicName);

            Console.WriteLine("Brookers:");
            foreach (var broker in metadataResponse.Brokers)
            {
                Console.WriteLine("\t" + broker);
            }
            Console.WriteLine(metadataResponse);

            return 0;
        }
예제 #2
0
        static void Main(string[] args)
        {
            string topicName = "kafkatopic";
            const int partitionId = 0;
            const int correlationId = 0;
            const int max = 4;

            if (args.Length < 1)
            {
                Usage();
                return;
            }

            string serverAddress = args[0].Split(':')[0];
            int serverPort = Convert.ToInt32(args[0].Split(':')[1]);

            if (args.Length > 1)
                topicName = args[1];

            var connector = new Connector(serverAddress, serverPort);

            // Can't get the time to work. Always use -1 i.e. from start
            const long time = -1;
            const string clientId = "c# KafkaOffset util";
            OffsetResponse offsetResponse = connector.GetOffsetResponse(topicName, time, max, correlationId, clientId, partitionId);

            foreach (var offsetTopicName in offsetResponse.Topics())
            {
                Console.WriteLine("Topic:\t\t" + offsetTopicName);
                foreach (var partition in offsetResponse.Partitions(offsetTopicName))
                {
                    Console.WriteLine("PartitionId:\t" + partition);
                    Console.WriteLine("Error:\t\t" + offsetResponse.Errorcode(offsetTopicName,partition));
                    Console.WriteLine("Offset count:\t" + offsetResponse.Offsets(offsetTopicName, partition).Count);
                    Console.Write("Offsets:\t");
                    for (int index = 0; index < offsetResponse.Offsets(offsetTopicName, partition).Count; index++)
                    {
                        if (index > 0)
                            Console.Write(',');
                        var offset = offsetResponse.Offsets(offsetTopicName, partition)[index];
                        Console.Write(offset);
                    }
                }
            }
        }
예제 #3
0
 public KafkaBusConnector(string brookerAddress, int brookerPort, string clientId)
 {
     this.clientId = clientId;
     connector = new Connector(brookerAddress, brookerPort);
 }
예제 #4
0
        static void Main(string[] args)
        {
            string topicName = "kafkatopic";
            int partitionId = 0;
            int correlationId = 0;

            KafkaBusConnector busConnector = new KafkaBusConnector("192.168.0.105", 9092, "KafkaConsole");

            IKafkaMessageConsumer consumer = new MessageConsumer();
            consumer.Start(busConnector, topicName, partitionId, 4, DumpMessage);

            while (Console.KeyAvailable == false)
            {
                Thread.Sleep(100);
            }
            consumer.Stop();

            //short errorCode = busConnector.Produce(topicName, -1, "Hello");

            var stream = busConnector.CreateMessageStream(topicName, partitionId, KafkaMessageStream.StreamStart.Beginning);
            foreach (var kafkaMessage in stream)
            {
                Console.WriteLine(kafkaMessage);
                if (Console.KeyAvailable == true)
                {
                    ConsoleKeyInfo info = Console.ReadKey();
                    stream.Close();
                }
            }
            stream = busConnector.CreateMessageStream(topicName, partitionId, KafkaMessageStream.StreamStart.Next);
            foreach (var kafkaMessage in stream)
            {
                Console.WriteLine(kafkaMessage);
                if (Console.KeyAvailable == true)
                {
                    ConsoleKeyInfo info = Console.ReadKey();
                    stream.Close();
                }
            }

            Connector connector = new Connector("192.168.0.105", 9092);
            int max = 4;

            byte[] message = new byte[]{49};
            message = Encoding.ASCII.GetBytes("Hello from c#");
            //MetadataResponse metadataResponse = connector.Metadata(correlationId, "C#", topicName);

            //Console.WriteLine(metadataResponse);

            //foreach (var broker in metadataResponse.Brokers)
            //{
            //    Console.WriteLine("Brooker:" + broker);
            //}

            //foreach (string metadataTopicName in metadataResponse.Topics())
            //{
            //    Console.Write("Topic:" + metadataTopicName);

            //    if (metadataResponse.TopicErrorCode(metadataTopicName) != 0)
            //        Console.WriteLine("\tTopic error:" + metadataResponse.TopicErrorCode(metadataTopicName));
            //    else
            //        Console.WriteLine();

            //    foreach (var partitionMetadata in metadataResponse.Partitions(topicName))
            //    {
            //        Console.WriteLine("\t" + partitionMetadata);

            //    }
            //}

            //connector.Produce(correlationId, "c#", 500, topicName, partitionId, message);

            OffsetResponse offsetResponse = connector.GetOffsetResponse(topicName, OffsetRequest.LatestTime, max, correlationId, "C#", partitionId);

            FetchResponse fetchResponse;
            int maxOffset = 0;
            foreach (var offsetTopicName in offsetResponse.Topics())
            {
                Console.WriteLine(offsetTopicName);
                foreach (var partition in offsetResponse.Partitions(offsetTopicName))
                {
                    Console.WriteLine("PartitionId:" + partition);
                    Console.WriteLine("Error:" + offsetResponse.Errorcode(offsetTopicName,partition));
                    Console.WriteLine("Offset count:" + offsetResponse.Offsets(offsetTopicName, partition).Count);
                    Console.WriteLine("Start offset:" + offsetResponse.Offsets(offsetTopicName, partition)[1]);
                    Console.WriteLine("End offset:" + offsetResponse.Offsets(offsetTopicName, partition)[0]);
                    fetchResponse = connector.Fetch(offsetTopicName, partition, correlationId, "C#", offsetResponse.Offsets(offsetTopicName, partition)[1],5000);

                    foreach (var fetchTopic in fetchResponse.Topics)
                    {
                        foreach (FetchPartition fetchPartition in fetchTopic.Partitions)
                        {
                            Console.WriteLine("Error:" + fetchPartition.ErrorCode);
                            Console.WriteLine("Id:" + fetchPartition.PartitionId);
                            foreach (var messageSet in fetchPartition.MessageSets)
                            {
                                if (messageSet != null)
                                {
                                    Console.Write("Offset:" + messageSet.MessageOffset + "\t");
                                    Console.WriteLine("Message:" + messageSet.Message);
                                }
                            }
                            Console.WriteLine();
                        }
                    }
                }
            }

            //fetchResponse = connector.Fetch("kafkatopic", 0, 1, "C#", 7);
            //foreach (var fetchTopic in fetchResponse.Topics)
            //{
            //    foreach (FetchPartition fetchPartition in fetchTopic.Partitions)
            //    {
            //        Console.WriteLine("Error:" + fetchPartition.ErrorCode);
            //        Console.WriteLine("Id:" + fetchPartition.PartitionId);
            //        if (fetchPartition.MessageSet != null)
            //        {
            //            Console.WriteLine(fetchPartition.MessageSet.Message);
            //        }
            //        Console.WriteLine();
            //    }
            //}

            //FetchResponse fetchResponse = connector.Fetch("kafkatopic", partitionId, correlationId, "C#", offsetResponse.Topics[0].Partitions[0].Offsets[1]);

            //foreach (var topic in fetchResponse.Topics)
            //{
            //    Console.WriteLine(topic.TopicName);
            //    foreach (FetchPartition partition in topic.Partitions)
            //    {
            //        Console.WriteLine("Error:" + partition.ErrorCode);
            //        Console.WriteLine("Id:" + partition.PartitionId);
            //        Console.Write("Offset:" + partition.MessageSet.MessageOffset + " ");
            //        Console.WriteLine(partition.MessageSet.Message);
            //    }
            //}

            //FetchResponse fetchResponse = connector.Fetch("kafkatopic", 0, 1, 1, offsetResponse.Topics[0].Partitions[0].Offsets[0]);
            //long[] offsets = consumer.GetOffsetsBefore("kafkatopic", 0, OffsetRequest.LatestTime, max).ToArray();
            //List<Message> messages = consumer.Consume("kafkatopic", 0, offsets[0]);
            //foreach (var message in messages)
            //{
            //    Console.WriteLine(message.ToString());
            //}
        }