private static void GatherAndSend()
        {
            System.Console.WriteLine("type some stuff to queue up");
            var input = System.Console.ReadLine();


            using (var mq = new MessageQueue(ConfigurationManager.AppSettings["OperationMessageQueuePath"]))
            {
                var qItem = new QueuedWorkItem()
                {
                    Name = input
                };
                using (var msg = new System.Messaging.Message(qItem))
                {
                    msg.Label     = "Queued Item from the console";
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(QueuedWorkItem) });
                    mq.Send(msg);
                    System.Console.WriteLine("Message sent. Message ID is {0}", msg.Id);
                }
            }

            System.Console.WriteLine("write another message to the queue? Y/N");
            var decision = System.Console.ReadLine();

            if (decision == "y")
            {
                GatherAndSend();
            }
        }
        private void ProcessQueuedWorkItem(QueuedWorkItem item)
        {
            //ok, so obviously here is where you're going to do your long-running logic.
            //for purposes of this demo, we're just going to do some bogus work
            NamedPipe.Sender.SendMessage(String.Format("Starting work on {0}", item.Name));

            var delay = new TimeSpan(0, 0, 3);

            for (var i = 0; i < 5; i++)
            {
                NamedPipe.Sender.SendMessage(String.Format("beginning work on item {0} of 5 for {1}", i, item.Name));
                System.Threading.Thread.Sleep(delay);
                NamedPipe.Sender.SendMessage(String.Format("completed work on item {0} of 5 for {1}", i, item.Name));
            }

            NamedPipe.Sender.SendMessage(String.Format("Completed work on {0}", item.Name));
        }
        public HttpResponseMessage Post()
        {
            using (var mq = new MessageQueue(ConfigurationManager.AppSettings["OperationMessageQueuePath"]))
            {
                var qItem = new QueuedWorkItem()
                {
                    Name = "Web Queue Item"
                };
                using (var msg = new System.Messaging.Message(qItem))
                {
                    msg.Label     = "Queued Item from the web";
                    msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(QueuedWorkItem) });
                    mq.Send(msg);
                    System.Console.WriteLine("Message sent. Message ID is {0}", msg.Id);
                }
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }