static void Main(string[] args) { XmlConfigurator.Configure(); IMessageClientConfigurationSection section = (IMessageClientConfigurationSection)ConfigurationManager.GetSection("clientSettings"); using (ClientMessageHandlerProxy clientMessageHandlerProxy = new ClientMessageHandlerProxy(section)) { clientMessageHandlerProxy.MessageReceived += new EventHandler <MessageReceivedEventArgs>(clientMessageHandlerProxy_MessageReceived); clientMessageHandlerProxy.Connect(); Console.WriteLine("Possible Keys:"); Console.WriteLine("\nsrk RoutingKey".PadRight(78) + " - subscribe to routing key".PadRight(40) + "\n -> srk Orders"); Console.WriteLine("\nurk RoutingKey".PadRight(78) + " - unsubscribe to routing key".PadRight(40) + "\n -> urk Orders"); Console.WriteLine("\ns rk=RoutingKey m=\"Message\"".PadRight(78) + " - send message to routing key".PadRight(40) + "\n -> s rk=Orders m=\"Hellow World\" OR s m=\"Hello World\""); Console.WriteLine("\nbs rk=RoutingKey m=\"Message\" s=TotalMessagesPerBulk t=SleepBetweenBulks".PadRight(78) + " - push messages continously to routing key".PadRight(40) + "\n -> bs rk=Orders m=\"Hellow World\" s=100 t=10"); Console.WriteLine("\nsbs".PadRight(78) + " - stop pushing messages"); Console.WriteLine("\nexit".PadRight(78) + " - stop client"); Console.WriteLine("\n\n"); bool running = true; Regex routingKeyRegex = new Regex(@" rk=([a-zA-Z]*)"); Regex messageRegex = new Regex(@" m=""([a-zA-Z ]*)"""); Regex bulkSizeRegex = new Regex(@" s=([0-9]*)"); Regex sleepThrottleRegex = new Regex(@" t=([0-9]*)"); string cmd, routingKey, message, str; Match match; int bulkSize = 10; int sleepThrottle = 10; while (running) { string line = Console.ReadLine(); if (line.Contains(" ")) { cmd = line.Substring(0, line.IndexOf(' ')).Trim(); } else { cmd = line; } routingKey = null; match = routingKeyRegex.Match(line); if (match.Success) { routingKey = match.Groups[1].Value; } message = string.Empty; match = messageRegex.Match(line); if (match.Success) { message = match.Groups[1].Value; } bulkSize = 10; match = bulkSizeRegex.Match(line); if (match.Success) { bulkSize = int.Parse(match.Groups[1].Value); } sleepThrottle = 10; match = sleepThrottleRegex.Match(line); if (match.Success) { sleepThrottle = int.Parse(match.Groups[1].Value); } switch (cmd) { case "srk": str = line.Substring(line.IndexOf(' ')).Trim(); if (!string.IsNullOrEmpty(str)) { clientMessageHandlerProxy.Subscribe(str); } break; case "urk": str = line.Substring(line.IndexOf(' ')).Trim(); if (!string.IsNullOrEmpty(str)) { clientMessageHandlerProxy.Unsubscribe(str); } break; case "s": clientMessageHandlerProxy.Publish <TestMessageType>(TestMessageType.Normal, routingKey, ASCIIEncoding.Default.GetBytes(message)); break; case "bs": if (_KeepBulkSending) { _KeepBulkSending = false; Console.WriteLine("Waiting for bulk push to stop..."); _BulkSendFinished.WaitOne(); Console.WriteLine("Bulk push stopped"); } _KeepBulkSending = true; ThreadPool.QueueUserWorkItem(delegate(object state) { Console.WriteLine("Start pushing messages"); while (_KeepBulkSending) { for (int i = 0; i < bulkSize; i++) { clientMessageHandlerProxy.Publish <TestMessageType>(TestMessageType.Bulk, routingKey, ASCIIEncoding.Default.GetBytes(message)); } Thread.Sleep(sleepThrottle); } _BulkSendFinished.Set(); }); break; case "sbs": if (_KeepBulkSending) { _KeepBulkSending = false; Console.WriteLine("Waiting for bulk push to stop..."); _BulkSendFinished.WaitOne(); clientMessageHandlerProxy.Publish <TestMessageType>(TestMessageType.StopBulk, routingKey, null); Console.WriteLine("Bulk push stopped"); } break; case "exit": running = false; break; } } } }