static void Main(string[] args) { var options = new Options(); var valid = CommandLine.Parser.Default.ParseArguments(args, options); if (!valid) { System.Environment.Exit(1); return; } Console.WriteLine("NSQnet CLI 1.0"); var line = new StringBuilder(); for (int x = 0; x < Console.WindowWidth; x++) { line.Append("="); } Console.WriteLine(line.ToString()); var nsq = new NSQ(options.Hostname, options.Port); nsq.MessageHandler = (sender, e) => { var sub = sender as NSQSubscriber; if (e.Message.Body.Length != 84) { throw new Exception("Bad Message!"); } System.Threading.Interlocked.Increment(ref processed); sub.Finish(e.Message.MessageId); sub.ResetReadyCount(); }; nsq.DisconnectedHandler = (sender, e) => { var sub = (sender as NSQSubscriber); var main_subscription = sub.Subscriptions.FirstOrDefault(); lock(_consoleLock) { Console.WriteLine(String.Format("{0}::{2}.{1} Disconnected", sub.Hostname, main_subscription.Channel, main_subscription.Topic)); } }; nsq.Topics.Add("load_test"); new Task(() => { while (true) { var delta = processed - last_processed; var time_delta = DateTime.Now - last_timestamp; var rate = (float)delta / (float)(time_delta.TotalMilliseconds / 1000); if (delta != 0) { lock(_consoleLock) { Console.WriteLine(String.Format("Processed {0} Messages at a rate of {1} m/sec", processed, rate)); } last_timestamp = DateTime.Now; last_processed = processed; } Thread.Sleep(500); } }).Start(); last_timestamp = DateTime.Now; nsq.Listen(); }
static void Main(string[] args) { var options = new Options(); var valid = CommandLine.Parser.Default.ParseArguments(args, options); if (!valid) { System.Environment.Exit(1); return; } Console.WriteLine("NSQnet CLI 1.0"); for (int x = 0; x < Console.WindowWidth; x++) { Console.Write("="); } Console.WriteLine(); NSQLookup lookupClient = new NSQLookup(options.Hostname, options.Port); var up = lookupClient.Ping(); Console.WriteLine("NSQLookupd Server is " + ( up ? "UP" : "NOT OK")); if(up) { while (true) { PollForNewSubscribers(lookupClient); Thread.Sleep(500); //poll every half second for new } } }