Exemple #1
0
        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;
                }
            }
        }
Exemple #2
0
        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;
                }
            }
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #7
0
        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);
            }
        }
Exemple #9
0
        /// <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);
Exemple #18
0
 public void WriteMessage(QueueMessageItem message, int elapsed, int waiting)
 {
     Console.WriteLine(message.Message);
 }
Exemple #19
0
 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);
        }