internal static void Run(ProduceMonitorHelperOptions produceMonitorOptions) { using (ZooKeeperClient zkClient = new ZooKeeperClient(produceMonitorOptions.Zookeeper, ZooKeeperConfiguration.DefaultSessionTimeout, ZooKeeperStringSerializer.Serializer)) { zkClient.Connect(); while (true) { SortedDictionary<int, long> latestOffsetDict = new SortedDictionary<int, long>(); SortedDictionary<int, int> parttionBrokerID_LeaderCountDistrib = new SortedDictionary<int, int>(); //BrokerID -->Count of as replica SortedDictionary<int, int> parttionBrokerID_ReplicaCountDistrib = new SortedDictionary<int, int>(); SortedDictionary<int, long> latestLength = new SortedDictionary<int, long>(); TopicHelper.DumpTopicMetadataAndOffsetInternal(zkClient, produceMonitorOptions.Topic, produceMonitorOptions.Zookeeper, -1, true, true, DateTime.MinValue, parttionBrokerID_LeaderCountDistrib, parttionBrokerID_ReplicaCountDistrib, latestOffsetDict, latestLength); if (latestOffsetDictLastValue == null) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("====Partitions====\r\n"); foreach (KeyValuePair<int, long> kv in latestOffsetDict) { sb.AppendFormat("{0,-9} ", kv.Key); } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); sb = new StringBuilder(); sb.AppendFormat("====LatestOffset====\r\n"); foreach (KeyValuePair<int, long> kv in latestOffsetDict) { sb.AppendFormat("{0,-9} ", kv.Value); } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); } else { StringBuilder sb = new StringBuilder(); sb.Append("Latest Delta: "); foreach (KeyValuePair<int, long> kv in latestOffsetDictLastValue) { if (latestOffsetDict.ContainsKey(kv.Key)) { sb.AppendFormat("{0,-9} ", latestOffsetDict[kv.Key] - kv.Value); } else { sb.AppendFormat("Latest:{0,-9} ", kv.Value); } } foreach (KeyValuePair<int, long> kv in latestOffsetDict) { if (!latestOffsetDictLastValue.ContainsKey(kv.Key)) sb.AppendFormat("NewLatest:{0}-{1,-9} ", kv.Key, kv.Value); } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); } latestOffsetDictLastValue = latestOffsetDict; Thread.Sleep(produceMonitorOptions.IntervalInSeconds * 1000); } } }
public static void MainInternal(int taskIndexInStorm, string[] args) { GenerateAssistFile("producesimple"); GenerateAssistFile("produceperftest"); GenerateAssistFile("producemonitor"); GenerateAssistFile("eventserverperftest"); GenerateAssistFile("consumesimple"); GenerateAssistFile("consumegroup"); GenerateAssistFile("consumegroupmonitor"); GenerateAssistFile("topic"); ServicePointManager.DefaultConnectionLimit = 5000; ServicePointManager.UseNagleAlgorithm = false; var log4netSection = ConfigurationManager.GetSection("log4net"); if (log4netSection != null) { //XmlConfigurator.Configure(); } KafkaNETExampleCommandVerb commandOptions = new KafkaNETExampleCommandVerb(); try { commandOptions.Parse(args); } catch (Exception e) { Logger.ErrorFormat("{0}", e.FormatException()); Console.WriteLine(KafkaNETExampleCommandVerb.GetUsage()); Environment.Exit(-1); } KafkaNETExampleSubArguments realOption = KafkaNETExampleCommandVerb.ActiveSubOption; try { realOption.Parse(args); } catch (Exception e) { Logger.ErrorFormat("{0}", e.FormatException()); Console.WriteLine(realOption.GetUsage(false)); Environment.Exit(-1); } Logger.InfoFormat("All arguments of {0}: \r\n{1}", KafkaNETExampleCommandVerb.AssemblyName, realOption.GetArgDict()); switch (KafkaNETExampleCommandVerb.Verb) { case "producesimple": case "produceroundrobin": ProduceSimpleHelperOption produceroundrobinOptions = (ProduceSimpleHelperOption)realOption; ProduceSimpleHelper.Run(produceroundrobinOptions); break; case "produceperftest": case "producewrapper": ProducePerfTestHelperOption producewrapperOption = (ProducePerfTestHelperOption)realOption; (new ProducePerfTestHelper()).Run(producewrapperOption); break; case "producem": case "producemonitor": ProduceMonitorHelperOptions produceMonitorOptions = (ProduceMonitorHelperOptions)realOption; ProduceMonitorHelper.Run(produceMonitorOptions); break; case "eventserverperftest": JavaEventServerPerfTestHelperOptions evetServerPerfTestOptions = (JavaEventServerPerfTestHelperOptions)realOption; (new JavaEventServerPerfTestHelper()).Run(evetServerPerfTestOptions); break; case "consumesimple": case "dumpdata": ConsumeDataHelperArguments dumpdataOptions = (ConsumeDataHelperArguments)realOption; ConsumeSimpleHelper.ConsumeDataSimple(dumpdataOptions); break; case "consumegroup": case "dumpdataasconsumergroup": ConsumeGroupHelperOptions cgOptions = (ConsumeGroupHelperOptions)realOption; if (taskIndexInStorm >= 0) { cgOptions.ConsumerId = cgOptions.ConsumerId + taskIndexInStorm.ToString(); cgOptions.File = cgOptions.ConsumerId + taskIndexInStorm.ToString() + cgOptions.File; } ConsumerGroupHelper.DumpMessageAsConsumerGroup(cgOptions); break; case "latestoffsetofconsumergroup": case "consumegroupmonitor": case "consumegroupm": case "consumem": ConsumeGroupMonitorHelperOptions dcgOptions = (ConsumeGroupMonitorHelperOptions)realOption; ConsumeGroupMonitorHelper.DumpConsumerGroupOffsets(dcgOptions); break; case "topic": TopicHelperArguments dtOptions = (TopicHelperArguments)realOption; TopicHelper.DumpTopicMetadataAndOffset(dtOptions); break; case "test": var testOptions = (TestHelperOptions)realOption; TestHelper.Run(testOptions); break; default: Logger.Error(string.Format("Invalid verb={0}", KafkaNETExampleCommandVerb.Verb)); return; } }
internal static void Run(ProduceMonitorHelperOptions produceMonitorOptions) { using (ZooKeeperClient zkClient = new ZooKeeperClient(produceMonitorOptions.Zookeeper, ZooKeeperConfiguration.DefaultSessionTimeout, ZooKeeperStringSerializer.Serializer)) { zkClient.Connect(); while (true) { SortedDictionary <int, long> latestOffsetDict = new SortedDictionary <int, long>(); SortedDictionary <int, int> parttionBrokerID_LeaderCountDistrib = new SortedDictionary <int, int>(); //BrokerID -->Count of as replica SortedDictionary <int, int> parttionBrokerID_ReplicaCountDistrib = new SortedDictionary <int, int>(); SortedDictionary <int, long> latestLength = new SortedDictionary <int, long>(); TopicHelper.DumpTopicMetadataAndOffsetInternal(zkClient, produceMonitorOptions.Topic, produceMonitorOptions.Zookeeper, -1, true, true, DateTime.MinValue, parttionBrokerID_LeaderCountDistrib, parttionBrokerID_ReplicaCountDistrib, latestOffsetDict, latestLength); if (latestOffsetDictLastValue == null) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("====Partitions====\r\n"); foreach (KeyValuePair <int, long> kv in latestOffsetDict) { sb.AppendFormat("{0,-9} ", kv.Key); } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); sb = new StringBuilder(); sb.AppendFormat("====LatestOffset====\r\n"); foreach (KeyValuePair <int, long> kv in latestOffsetDict) { sb.AppendFormat("{0,-9} ", kv.Value); } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); } else { StringBuilder sb = new StringBuilder(); sb.Append("Latest Delta: "); foreach (KeyValuePair <int, long> kv in latestOffsetDictLastValue) { if (latestOffsetDict.ContainsKey(kv.Key)) { sb.AppendFormat("{0,-9} ", latestOffsetDict[kv.Key] - kv.Value); } else { sb.AppendFormat("Latest:{0,-9} ", kv.Value); } } foreach (KeyValuePair <int, long> kv in latestOffsetDict) { if (!latestOffsetDictLastValue.ContainsKey(kv.Key)) { sb.AppendFormat("NewLatest:{0}-{1,-9} ", kv.Key, kv.Value); } } Logger.Info(sb.ToString()); KafkaNetLibraryExample.AppendLineToFile(produceMonitorOptions.File, sb.ToString()); } latestOffsetDictLastValue = latestOffsetDict; Thread.Sleep(produceMonitorOptions.IntervalInSeconds * 1000); } } }
internal void Parse(string[] args) { if (args == null || args.Length <= 0) { throw new ArgumentException("Please provide verb."); } Verb = args[0].ToLowerInvariant(); if ("topic" == Verb.ToLowerInvariant()) ActiveSubOption = new TopicHelperArguments(); else if ("dumpdata" == Verb.ToLowerInvariant() || KafkaNETExampleType.ConsumeSimple.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ConsumeDataHelperArguments(); else if ("dumpdataasconsumergroup" == Verb.ToLowerInvariant() || KafkaNETExampleType.ConsumeGroup.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ConsumeGroupHelperOptions(); else if ("latestoffsetofconsumergroup" == Verb.ToLowerInvariant() || "consumegroupm" == Verb.ToLowerInvariant() || "consumem" == Verb.ToLowerInvariant() || KafkaNETExampleType.ConsumeGroupMonitor.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ConsumeGroupMonitorHelperOptions(); else if ("produceroundrobin" == Verb.ToLowerInvariant() || KafkaNETExampleType.ProduceSimple.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ProduceSimpleHelperOption(); else if ("test" == Verb.ToLowerInvariant()) ActiveSubOption = new TestHelperOptions(); else if ("producewrapper" == Verb.ToLowerInvariant() || KafkaNETExampleType.ProducePerfTest.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ProducePerfTestHelperOption(); else if ("producem" == Verb.ToLowerInvariant() || KafkaNETExampleType.ProduceMonitor.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new ProduceMonitorHelperOptions(); else if (KafkaNETExampleType.EventServerPerfTest.ToString().ToLowerInvariant() == Verb.ToLowerInvariant()) ActiveSubOption = new JavaEventServerPerfTestHelperOptions(); else { throw new ArgumentException(string.Format("The command verb {0} is not recoganized.", Verb)); } }