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)); }