示例#1
0
文件: Program.cs 项目: xzoth/NSQnet
        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();
        }
示例#2
0
文件: Program.cs 项目: 40a/NSQnet
        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
                }
            }
        }