public object RescheduleFailed(String queueName)
 {
     if (QueueDispatcher != null)
     {
         var success = QueueDispatcher.ReScheduleFailed(queueName);
         return(new { Success = success });
     }
     return(new { Error = "Queue manager infrastructure not started" });
 }
示例#2
0
        static void Main(string[] args)
        {
            var queueDispatcher = new QueueDispatcher("Test");

            for (int i = 1; i <= 200; i++)
            {
                var count = i % 4;
                queueDispatcher.Publish($"Hello {i}" + "".PadRight(count == 0 ? 1 : count, '.'));
            }
            Console.ReadLine();
        }
示例#3
0
        public static void Main(string[] args)
        {
            IQueueDispatcher queueDispatcher = new QueueDispatcher(new ParallelTaskHandler());

            queueDispatcher.Start();
            //---
            queueDispatcher.Enqueue(new AsyncTask <string>("http://ya.ru", DownloadAction, 3000));
            queueDispatcher.Enqueue(new AsyncTask <string>("http://rambler.ru", DownloadAction));
            queueDispatcher.Enqueue(new AsyncTask <string>("http://mail.ru", DownloadAction));
            //---
            System.Console.ReadKey();
        }
示例#4
0
        static void Main(string[] args)
        {
            Menu menu = new Menu();
            Bus  bus  = new Bus();

            Manager manager      = new Manager();
            var     managerQueue = new QueuedHandler <OrderCompleted>(manager, "Manager Queue");

            cashier = new Cashier(bus);
            var cashierQueue = new QueuedHandler <PayForOrder>(cashier, "Cashier Queue");

            AssistantManager assistantManager = new AssistantManager(bus);
            var assistantManagerQueue         = new QueuedHandler <PriceOrder>(assistantManager, "Assistant Manager Queue");

            Cook cook1      = new Cook(bus, 200);
            var  cook1Queue = new QueuedHandler <CookOrder>(cook1, "Cook Queue1");

            Cook cook2      = new Cook(bus, 400);
            var  cook2Queue = new QueuedHandler <CookOrder>(cook2, "Cook Queue2");

            Cook cook3      = new Cook(bus, 600);
            var  cook3Queue = new QueuedHandler <CookOrder>(cook3, "Cook Queue3");

            EvilActor evilActor = new EvilActor(bus);

            var cookdispatcher = new QueueDispatcher <CookOrder>(new List <QueuedHandler <CookOrder> > {
                cook1Queue, cook2Queue, cook3Queue
            });
            //var dropper = new MessageDropper<CookOrder>(cookdispatcher);
            //var ttlh = new TimeToLiveHandler<CookOrder>(dropper);
            var cookDispatcherQueue = new QueuedHandler <CookOrder>(cookdispatcher, "Cook Dispatcher");

            UkRestaurantProcessManagerPool processManagerPool = new UkRestaurantProcessManagerPool(bus);

            bus.Subscribe(processManagerPool);

            AlarmClock <OrderPlaced> orderPlacedReminder = new AlarmClock <OrderPlaced>(bus);
            AlarmClock <CookOrder>   cookReminder        = new AlarmClock <CookOrder>(bus);

            Waiter waiter = new Waiter(bus, menu);

            var orderReadModel = new OrderReadModel();

            bus.Subscribe(orderPlacedReminder);
            bus.Subscribe(cookReminder);
            bus.Subscribe(cookDispatcherQueue);
            bus.Subscribe(assistantManagerQueue);
            bus.Subscribe(cashierQueue);
            bus.Subscribe(managerQueue);
            //bus.Subscribe(evilActor);
            bus.Subscribe <HumanInterventionRequired>(manager);

            List <IStartable> startable = new List <IStartable> {
                managerQueue, cashierQueue, assistantManagerQueue, cook1Queue, cook2Queue, cook3Queue, cookDispatcherQueue, orderReadModel
            };

            queues = new List <IMonitorableQueue>()
            {
                managerQueue, cashierQueue, assistantManagerQueue, cook1Queue, cook2Queue, cook3Queue, cookDispatcherQueue
            };
            startable.ForEach(s => s.Start());

            //Thread monitor = new Thread(Printout) { IsBackground = true };
            KeepOnMonitoring = true;
            //monitor.Start();

            Stopwatch sw = new Stopwatch();

            sw.Start();

            bus.SubscribeToAll <OrderPlaced>(orderReadModel);
            bus.SubscribeToAll <OrderCooked>(orderReadModel);
            bus.SubscribeToAll <OrderPriced>(orderReadModel);
            bus.SubscribeToAll <OrderPaid>(orderReadModel);
            bus.SubscribeToAll <OrderCompleted>(orderReadModel);

            for (int i = 0; i <= 20; i++)
            {
                Customer cust = new Customer(bus, waiter, cashier);
                cust.PlaceOrder();
            }

            Console.ReadLine();
            KeepOnMonitoring = false;

            sw.Stop();
            Console.WriteLine("Completed in {0} milliseconds", sw.ElapsedMilliseconds);
            Console.WriteLine("Paid Orders: {0}, Completed Orders: {1}, Total: {2}", paidOrders, manager.Count, manager.Total);

            Console.ReadLine();
        }
示例#5
0
        public void start()
        {
            IMessagingBus bus = MQFactory.Instance.createMessagingBus();


            IMQConnection serverConnection = null;
            IMessageQueue <ExampleMessage>            queue        = null;
            IPersistenceQueueStorage <ExampleMessage> queueStorage = null;
            QueueDispatcher dispatcher = null;

            try {
                serverConnection = bus.create(new Uri("bnmq://127.0.0.1:3333"));
                serverConnection.addListener(new MQConnectionListener());
                ISupplier supplier = serverConnection.createSupplier("ExampleSupplier");
                Console.WriteLine("Supplier created successfully");

                IDictionary <String, Object> storProps = new Dictionary <String, Object>();
                storProps.Add("storageName", "MyMemoryStorage");
                // For InMemoryDB (It's not HSQLDB!)
                IPersistenceStorage <ExampleMessage> persistStorage = MQFactory.Instance.createPersistenceStorage <ExampleMessage>("InMemory", storProps);

                queueStorage = persistStorage.createQueueStorage("MyQueue");
                Console.WriteLine("QueueStorage created successfully");

                queue = supplier.createQueue <ExampleMessage>("myqueues/queue", queueStorage);
                Console.WriteLine("MessageQueue created successfully");

                serverConnection.start();
                Console.WriteLine("Listener created successfully");

                dispatcher = new QueueDispatcher(queue);
                dispatcher.start();
                Console.WriteLine("Example queue dispatcher started successfully");

                Console.WriteLine("Please enter to exit");
                Console.ReadKey();
                Console.WriteLine("Trying to stop example queue dispatcher");
                dispatcher.stop();
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }
            finally {
                if (serverConnection != null)
                {
                    Console.WriteLine("Trying to close listener");
                    serverConnection.close();
                }

                if (queue != null)
                {
                    Console.WriteLine("Trying to stop queue");
                    queue.stop();
                }

                if (queueStorage != null)
                {
                    Console.WriteLine("Trying to close queue storage");
                    queueStorage.close();
                }

                if (bus != null)
                {
                    Console.WriteLine("Trying to finallize messaging bus");
                    bus.close();
                }
            }
        }
示例#6
0
        public void start()
        {
            IMessagingBus bus = MQFactory.Instance.createMessagingBus();

            IMQConnection serverConnection  = null;
            IMessageQueue<ExampleMessage> queue = null;
            IPersistenceQueueStorage<ExampleMessage> queueStorage = null;
            QueueDispatcher dispatcher = null;
            try {
                serverConnection  = bus.create(new Uri("bnmq://127.0.0.1:3333"));
                serverConnection.addListener(new MQConnectionListener());
                ISupplier supplier =  serverConnection.createSupplier("ExampleSupplier");
                Console.WriteLine("Supplier created successfully");

                IDictionary<String,Object> storProps = new Dictionary<String,Object>();
                storProps.Add("storageName","MyMemoryStorage");
                // For InMemoryDB (It's not HSQLDB!)
                IPersistenceStorage< ExampleMessage > persistStorage =  MQFactory.Instance.createPersistenceStorage<ExampleMessage>("InMemory",storProps);

                queueStorage = persistStorage.createQueueStorage("MyQueue");
                Console.WriteLine("QueueStorage created successfully");

                queue = supplier.createQueue<ExampleMessage>("myqueues/queue", queueStorage);
                Console.WriteLine("MessageQueue created successfully");

                serverConnection.start();
                Console.WriteLine("Listener created successfully");

                dispatcher = new QueueDispatcher(queue);
                dispatcher.start();
                Console.WriteLine("Example queue dispatcher started successfully");

                Console.WriteLine("Please enter to exit");
                Console.ReadKey();
                Console.WriteLine("Trying to stop example queue dispatcher");
                dispatcher.stop();
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
            }
            finally {
                if (serverConnection != null)
                {
                    Console.WriteLine("Trying to close listener");
                    serverConnection.close();
                }

                if(queue!=null)
                {
                    Console.WriteLine("Trying to stop queue");
                    queue.stop();
                }

                if(queueStorage!=null)
                {
                    Console.WriteLine("Trying to close queue storage");
                    queueStorage.close();
                }

                if(bus!=null) {
                    Console.WriteLine("Trying to finallize messaging bus");
                    bus.close();
                }
            }
        }
示例#7
0
 private void Awake()
 {
     dispather  = new QueueDispatcher <Actions>();
     _userStore = new UserStore(dispather);
 }