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 CompleteMessageTest() { this.SubmitRequestWithPropertiesTest(); var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); 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 QueueMessageManagerMongoDb(); 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 LoadRequestTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); var item = manager.Collection.AsQueryable().FirstOrDefault(); // no pending items - nothing to do if (item == null) { Console.WriteLine("No pending items... nothing to do."); return; } string reqId = item.Id; Console.WriteLine(reqId); // clear out item item = null; // load through manager item = manager.Load(reqId); Assert.IsNotNull(item, manager.ErrorMessage); item.Message = "Updated @ " + DateTime.Now.ToString("t"); item.PercentComplete = 10; Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void SubmitRequestTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); string imageId = "10"; // Create a message object // item contains many properties for pushing // values back and forth as well as a few message fields var item = manager.CreateItem(); item.QueueName = "MPWF"; item.Action = "PRINTIMAGE"; item.TextInput = imageId; item.Message = "Print Image operation started at " + DateTime.Now.ToString(); item.PercentComplete = 10; // *** you can also serialize objects directly into the Xml property // manager.Serialization.SerializeToXml(SomeObjectToSerialize); // add an arbitrary custom properties - serialized to Xml manager.Properties.Add("Time", DateTime.Now); manager.Properties.Add("User", "ricks"); // Set the message status and timestamps as submitted manager.SubmitRequest(item); // actually save the queue message to disk Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void SubmitRequestWithPropertiesTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); manager.SubmitRequest(messageText: "New Entry with Properties"); // add a custom property manager.Properties.Add("Time", DateTime.Now); Assert.IsTrue(manager.Save(), manager.ErrorMessage); }
public void GetRecentMessagesTest() { using (var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING)) { var items = manager.GetRecentQueueItems("MPWF"); foreach (var item in items) { Console.WriteLine(item.Id + " " + item.Message); } } }
public void ConstructorOverrideTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); Console.WriteLine(manager.ConnectionString); Assert.IsTrue(manager.ConnectionString == CONNECTION_STRING,"ConnectionString is not set"); manager = new QueueMessageManagerMongoDb("MyApplicationConnectionString"); Console.WriteLine(manager.ConnectionString); Assert.IsTrue(manager.ConnectionString == "MyApplicationConnectionString"); }
public void ConstructorOverrideTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); Console.WriteLine(manager.ConnectionString); Assert.IsTrue(manager.ConnectionString == CONNECTION_STRING, "ConnectionString is not set"); manager = new QueueMessageManagerMongoDb("MyApplicationConnectionString"); Console.WriteLine(manager.ConnectionString); Assert.IsTrue(manager.ConnectionString == "MyApplicationConnectionString"); }
public void SubmitRequestWithPresetObjectTest() { string xml = "<doc><value>Hello</value></doc>"; var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); var msg = new QueueMessageItem() { QueueName="MPWF", Message = "Xml Message @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER", Xml = xml }; manager.SubmitRequest(msg); Assert.IsTrue(manager.Save(msg), manager.ErrorMessage); }
public void SubmitRequestWithPresetObjectTest() { string xml = "<doc><value>Hello</value></doc>"; var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); var msg = new QueueMessageItem() { QueueName = "MPWF", Message = "Xml Message @ " + DateTime.Now.ToString("t"), Action = "NEWXMLORDER", Xml = xml }; manager.SubmitRequest(msg); Assert.IsTrue(manager.Save(msg), manager.ErrorMessage); }
void ProcessGetNextItem() { while (!CancelProcessing) { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); var item = manager.GetNextQueueMessage("Queue1"); if (item != null) { IdList.Add(item.Id); } else { IdErrors.Add(manager.ErrorMessage); } Thread.Yield(); } }
public void GetNextQueueMessageItemWithoutAddedItemTest() { // allow rolling back using (var scope = new TransactionScope()) { using (var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING)) { // delete all pending requests var result = manager.Collection.RemoveAll(); Assert.IsTrue(result.Ok, result.ErrorMessage); var item = manager.GetNextQueueMessage(); Assert.IsNull(item); // Error Message should be: No queue messages pending Console.WriteLine(manager.ErrorMessage); } } }
public void GetNextQueueMessageItemWithAddedItemTest() { using (var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING)) { Assert.IsTrue(manager.DeleteWaitingMessages()); // create a pending message manager.SubmitRequest(messageText: "Next Complete Test " + DateTime.Now.ToString("t")); Assert.IsTrue(manager.Save(), manager.ErrorMessage); var item = manager.GetNextQueueMessage(); Assert.IsNotNull(item, manager.ErrorMessage); Console.WriteLine(item.Status); manager.CompleteRequest(item, "Next Complete complete " + DateTime.Now.ToString("t")); Assert.IsTrue(manager.Save(), manager.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; } }
void ProcessGetNextItem() { while(!CancelProcessing) { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); var item = manager.GetNextQueueMessage("Queue1"); if (item != null) IdList.Add(item.Id); else IdErrors.Add(manager.ErrorMessage); Thread.Yield(); } }
public void ScaleControllerRetrievalTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); manager.Collection.RemoveAll(); CancelProcessing = false; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 30000; i++) { string imageId = "10"; // Create a message object // item contains many properties for pushing // values back and forth as well as a few message fields var item = manager.CreateItem(); item.QueueName = "Queue1"; item.TextInput = DataUtils.GenerateUniqueId(15); // Set the message status and timestamps as submitted manager.SubmitRequest(item, autoSave: true); } Console.WriteLine("Done adding: " + sw.ElapsedMilliseconds + "ms"); Console.WriteLine("Items inserted."); IdList = new List<string>(); IdErrors = new List<string>(); for (int i = 0; i < 10; i++) { var thread = new Thread(ProcessGetNextItem); thread.Start(); } //Task.Run(() => //{ // for (int i = 0; i < 100; i++) // { // manager = new QueueMessageManagerSql(); // string imageId = "10"; // // Create a message object // // item contains many properties for pushing // // values back and forth as well as a few message fields // var item = manager.CreateItem(); // item.QueueName = "Queue1"; // item.TextInput = DataUtils.GenerateUniqueId(15); // // Set the message status and timestamps as submitted // manager.SubmitRequest(item, autoSave: true); // } // Thread.Sleep(60); //}); for (int i = 0; i < 500; i++) { if (CancelProcessing) break; string imageId = "10"; // Create a message object // item contains many properties for pushing // values back and forth as well as a few message fields var item = manager.CreateItem(); item.QueueName = "Queue1"; item.TextInput = DataUtils.GenerateUniqueId(15); // Set the message status and timestamps as submitted manager.SubmitRequest(item, autoSave: true); Thread.Yield(); } Console.WriteLine("Waiting for 5 seconds"); Thread.Sleep(5000); CancelProcessing = true; Thread.Sleep(150); Console.WriteLine("Done"); Console.WriteLine("Items processed: " + IdList.Count); IdList.Add("12345"); IdList.Add("321321"); IdList.Add("12345"); var grouped = IdList.GroupBy(s => s); Console.WriteLine("Unique Count: " + grouped.Count()); foreach (var error in IdErrors) Console.WriteLine(" " + error); }
public void ScaleControllerRetrievalTest() { var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); manager.Collection.RemoveAll(); CancelProcessing = false; var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 30000; i++) { string imageId = "10"; // Create a message object // item contains many properties for pushing // values back and forth as well as a few message fields var item = manager.CreateItem(); item.QueueName = "Queue1"; item.TextInput = DataUtils.GenerateUniqueId(15); // Set the message status and timestamps as submitted manager.SubmitRequest(item, autoSave: true); } Console.WriteLine("Done adding: " + sw.ElapsedMilliseconds + "ms"); Console.WriteLine("Items inserted."); IdList = new List <string>(); IdErrors = new List <string>(); for (int i = 0; i < 10; i++) { var thread = new Thread(ProcessGetNextItem); thread.Start(); } //Task.Run(() => //{ // for (int i = 0; i < 100; i++) // { // manager = new QueueMessageManagerSql(); // string imageId = "10"; // // Create a message object // // item contains many properties for pushing // // values back and forth as well as a few message fields // var item = manager.CreateItem(); // item.QueueName = "Queue1"; // item.TextInput = DataUtils.GenerateUniqueId(15); // // Set the message status and timestamps as submitted // manager.SubmitRequest(item, autoSave: true); // } // Thread.Sleep(60); //}); for (int i = 0; i < 500; i++) { if (CancelProcessing) { break; } string imageId = "10"; // Create a message object // item contains many properties for pushing // values back and forth as well as a few message fields var item = manager.CreateItem(); item.QueueName = "Queue1"; item.TextInput = DataUtils.GenerateUniqueId(15); // Set the message status and timestamps as submitted manager.SubmitRequest(item, autoSave: true); Thread.Yield(); } Console.WriteLine("Waiting for 5 seconds"); Thread.Sleep(5000); CancelProcessing = true; Thread.Sleep(150); Console.WriteLine("Done"); Console.WriteLine("Items processed: " + IdList.Count); IdList.Add("12345"); IdList.Add("321321"); IdList.Add("12345"); var grouped = IdList.GroupBy(s => s); Console.WriteLine("Unique Count: " + grouped.Count()); foreach (var error in IdErrors) { Console.WriteLine(" " + error); } }
public void CompleteMessageTest() { this.SubmitRequestWithPropertiesTest(); var manager = new QueueMessageManagerMongoDb(CONNECTION_STRING); 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 QueueMessageManagerMongoDb(); 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); }