public void SubmitRequestsToQueueTest() { var manager = new QueueMessageManagerSql(); int queueCount = 30; bool res = true; for (int i = 0; i < queueCount; i++) { var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message #" + i + " @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER" }; if (!manager.SubmitRequest(msg)) { Console.WriteLine(manager.ErrorMessage); } res = manager.Save(msg); if (!res) { break; } } }
public void SubmitRequestsToQueueTest() { var manager = new QueueMessageManagerSqlMsMq(CONNECTION_STRING, BASE_QUEUE_PATH); int queueCount = 10; bool res = true; for (int i = 0; i < queueCount; i++) { var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message #" + i.ToString() + " @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER" }; manager.SubmitRequest(msg); res = manager.Save(msg); if (!res) { break; } } }
public void CompleteMessageTest() { this.SubmitRequestWithPropertiesTest(); var manager = new QueueMessageManagerSql(); var item = new QueueMessageItem() { TextInput = "My input", Message = "Getting started." }; manager.CreateItem(item); manager.Properties["Time"] = DateTime.Now; Assert.IsTrue(manager.Save(), manager.ErrorMessage); string reqId = item.Id; manager = new QueueMessageManagerSql(); item = manager.GetNextQueueMessage(); DateTime?time = manager.GetProperty("Time") as DateTime?; Assert.IsNotNull(time); manager.CompleteRequest(item, "Message completed @" + DateTime.Now.ToString("t")); Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void SingleQueueControllerTest() { var manager = new QueueMessageManagerSql(); // sample - create 3 message for (int i = 0; i < 3; i++) { var item = new QueueMessageItem() { QueueName = "Queue1", Message = "Print Image", Action = "PRINTIMAGE", TextInput = "4334333" // image Id }; // sets appropriate settings for submit on item manager.SubmitRequest(item); // item has to be saved Assert.IsTrue(manager.Save(), manager.ErrorMessage); Console.WriteLine("added " + manager.Item.Id); } Console.WriteLine("Starting... Async Manager Processing"); // create a new Controller to process in the background // on separate threads var controller = new QueueController() { ConnectionString = "QueueMessageManager", ThreadCount = 2, WaitInterval = 200, QueueName = "Queue1" }; Console.WriteLine("Wait: " + controller.WaitInterval); // ExecuteStart Event is where your processing logic goes controller.ExecuteStart += controller_ExecuteStart; // ExecuteFailed and ExecuteComplete let you take actions on completion controller.ExecuteComplete += controller_ExecuteComplete; controller.ExecuteFailed += controller_ExecuteFailed; // actually start the queue controller.StartProcessingAsync(); // For test we have to keep the threads alive // to allow the 3 requests to process Thread.Sleep(2000); // shut down controller.StopProcessing(); Thread.Sleep(200); Console.WriteLine("Stopping... Async Manager Processing"); Assert.IsTrue(true); }
/// <summary> /// Writes out a message to all SignalR clients /// </summary> /// <param name="queueItem"></param> /// <param name="elapsed"></param> /// <param name="waiting"></param> public static void WriteMessage(QueueMessageItem queueItem, int elapsed = 0, int waiting = -1, DateTime?time = null) { string elapsedString = string.Empty; if (elapsed > 0) { elapsedString = (Convert.ToDecimal(elapsed) / 1000).ToString("N2") + "s"; } var msg = HtmlUtils.DisplayMemo(queueItem.Message); if (time == null) { time = DateTime.UtcNow; } // Write out message to SignalR clients HubContext.Clients.All.writeMessage(msg, queueItem.Status, time.Value.ToString("HH:mm:ss"), queueItem.Id, elapsedString, waiting, queueItem.QueueName); }
public void SubmitRequestWithPresetObjectTest() { string xml = "<doc><value>Hello</value></doc>"; var manager = new QueueMessageManagerSql(); var msg = new QueueMessageItem() { QueueName="MPWF", Message = "Xml Message @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER", Xml = xml }; manager.SubmitRequest(msg); Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void SubmitRequestWithPresetObjectTest() { string xml = "<doc><value>Hello</value></doc>"; var manager = new QueueMessageManagerSqlMsMq(CONNECTION_STRING, BASE_QUEUE_PATH); var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER", Xml = xml }; manager.SubmitRequest(msg); Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void AddManyQueueSqlMsMqItems() { var qm = new QueueMessageManagerSqlMsMq(connectionString); qm.MsMqQueuePath = @".\Private$\"; for (int i = 0; i < 10; i++) { var item2 = new QueueMessageItem() { Message = "MSMQ New Entry", TextInput = "Process This", QueueName = "MPWF", Action = "HELLOWORLD", Xml = string.Format(@"<doc> <company>East Wind</company> <name>Rick</name> <time>{0}</time> </doc> ", DateTime.Now.ToString("MMM dd - HH:mm:ss")) }; Thread.Sleep(300); Assert.IsTrue(qm.SubmitRequest(item2, null, true), qm.ErrorMessage); } for (int i = 0; i < 10; i++) { var item2 = new QueueMessageItem() { Message = "MSMQ New Entry", TextInput = "Process This", QueueName = "MPWF_VFP", Action = "HELLOWORLD", Xml = string.Format(@"<doc> <company>East Wind</company> <name>Rick</name> <time>{0}</time> </doc> ", DateTime.Now.ToString("MMM dd - HH:mm:ss")) }; Thread.Sleep(300); Assert.IsTrue(qm.SubmitRequest(item2, null, true), qm.ErrorMessage); } }
/// <summary> /// Writes out a message to all SignalR clients /// </summary> /// <param name="queueItem"></param> /// <param name="elapsed"></param> /// <param name="waiting"></param> public static void WriteMessage(QueueMessageItem queueItem, int elapsed = 0, int waiting = -1) { string elapsedString = string.Empty; if (elapsed > 0) { elapsedString = (Convert.ToDecimal(elapsed) / 1000).ToString("N2") + "s"; } // Write out message to SignalR clients HubContext.Clients.All.writeMessage(queueItem.Message, queueItem.Status, DateTime.Now.ToString("HH:mm:ss"), queueItem.Id, elapsedString, waiting); }
public void AddQueueItem() { var qm = new QueueMessageManagerSql(connectionString); var item = new QueueMessageItem() { Message = "Single SQL Entry", TextInput = "Process This", QueueName = "MPWF", Action = "HELLOWORLD", Xml = @"<doc> <company>West Wind</company> <name>Rick</name> </doc> " }; Assert.IsTrue(qm.SubmitRequest(item, null, true), qm.ErrorMessage); }
public void SubmitRequestsToQueueTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); int queueCount = 10; bool res = true; for (int i = 0; i < queueCount; i++) { var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message #" + i.ToString() + " @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER" }; manager.SubmitRequest(msg); res = manager.Save(msg); if (!res) break; } }
public void SubmitRequestsToQueueTest() { var manager = new QueueMessageManagerSql(); int queueCount = 30; bool res = true; for (int i = 0; i < queueCount; i++) { var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message #" + i + " @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER" }; if (!manager.SubmitRequest(msg)) Console.WriteLine(manager.ErrorMessage); res = manager.Save(msg); if (!res) break; } }
/// <summary> /// Dispatches the specified object. /// </summary> /// <param name="obj">The object.</param> /// <returns></returns> protected void Dispatch(object obj) { QueueMessageItem <T> message = obj as QueueMessageItem <T>; try { message.CheckNullObject(nameof(message)); var result = Process(message); result.CheckNullObject(nameof(result)); if (result.IsSucceed) { QueueMessageOperator.DeleteMessage(message.Id, result.Receipt); } else if (result.Exception != null) { throw result.Exception; } } catch (Exception ex) { WriteException(ex.Handle(new { message })); } }
/// <summary> /// Writes out a message to the SignalR hub /// </summary> /// <param name="queueItem"></param> /// <param name="elapsed"></param> /// <param name="waiting"></param> public virtual void WriteMessage(QueueMessageItem queueItem, int elapsed = 0, int waiting = -1) { // forward to SignalR Hub broadcast QueueMonitorServiceHub.WriteMessage(queueItem, elapsed, waiting); }
public void CompleteMessageTest() { this.SubmitRequestWithPropertiesTest(); var manager = new QueueMessageManagerSql(); var item = new QueueMessageItem() { TextInput = "My input", Message = "Getting started." }; manager.CreateItem(item); manager.Properties["Time"] = DateTime.Now; Assert.IsTrue(manager.Save(),manager.ErrorMessage); string reqId = item.Id; manager = new QueueMessageManagerSql(); item = manager.GetNextQueueMessage(); DateTime? time = manager.GetProperty("Time") as DateTime?; Assert.IsNotNull(time); manager.CompleteRequest(item,"Message completed @" + DateTime.Now.ToString("t")); Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
/// <summary> /// Writes the log. /// </summary> /// <param name="message">The message.</param> /// <returns></returns> protected abstract string WriteLog(QueueMessageItem <T> message);
/// <summary> /// Processes the specified message. /// </summary> /// <param name="message">The message.</param> /// <returns></returns> protected abstract QueueDispatcherResult Process(QueueMessageItem <T> message);
public void WriteMessage(QueueMessageItem message, int elapsed, int waiting) { Console.WriteLine(message.Message); }
public void Notify(QueueMessageItem queueItem, int elapsed = 0, int waiting = 0) { WriteMessage(queueItem, elapsed, waiting); }
public void QueueControllerMultipleTest() { var manager = new QueueMessageManagerSql(); // sample - create 3 message in 'default' queue for (int i = 0; i < 3; i++) { var item = new QueueMessageItem() { Message = "Print Image", Action = "PRINTIMAGE", TextInput = "4334333", // image Id QueueName = "Queue1" }; // sets appropriate settings for submit on item manager.SubmitRequest(item); // item has to be saved Assert.IsTrue(manager.Save(), manager.ErrorMessage); Console.WriteLine("added to Queue1:" + manager.Item.Id); } // sample - create 3 message in 'default' queue for (int i = 0; i < 3; i++) { var item = new QueueMessageItem() { Message = "Print Image (2nd)", Action = "PRINTIMAGE", TextInput = "5334333", // image Id QueueName = "Queue2" }; // sets appropriate settings for submit on item manager.SubmitRequest(item); // item has to be saved Assert.IsTrue(manager.Save(), manager.ErrorMessage); Console.WriteLine("added to Queue2: " + manager.Item.Id); } // create a new Controller to process in the background // on separate threads var controller = new QueueControllerMultiple(new List <QueueController>() { new QueueControllerMultiple() { QueueName = "Queue1", WaitInterval = 300, ThreadCount = 5 }, new QueueControllerMultiple() { QueueName = "Queue2", WaitInterval = 500, ThreadCount = 3 } }); // Point all controllers at the same execution handlers // Alternately you can configure each controller with their // own event handlers or implement custom controller subclasses // that use the OnXXX handlers to handle the events controller.ExecuteStart += controller_ExecuteStart; controller.ExecuteComplete += controller_ExecuteComplete; controller.ExecuteFailed += controller_ExecuteFailed; // actually start the queue Console.WriteLine("Starting... Async Manager Processing"); controller.StartProcessingAsync(); // For test we have to keep the threads alive // to allow the 10 requests to process Thread.Sleep(2000); // shut down controller.StopProcessing(); Thread.Sleep(200); Console.WriteLine("Stopping... Async Manager Processing"); Assert.IsTrue(true); Console.WriteLine("Processed: " + controller.MessagesProcessed); }