public void Handle(OrderPlaced message)
        {
            var processManager = _pmf.Create(message.Order, _bus);

            ((BaseProcessManager)processManager).Finish += (o, a) =>
            {
                _processors.Remove(message.CorrelationId);
            };

            _bus.SubscribeByCorrelationId(processManager, message.CorrelationId.ToString());
            _processors.Add(message.CorrelationId, processManager);
        }
Пример #2
0
        public static void Main(string[] args)
        {
            List <IStartable> startables = new List <IStartable>();
            var bus = new TopicBasedPubSub();

            var monitor = new OrderMonitor();

            var waiter = SetUp(startables, bus);

            var coordinator = new ProcessManagerCoordinator(bus);

            StartMonitoring(startables);
            bus.SubscribeByType(coordinator);

            startables.ForEach(x => x.Start());

            for (int i = 0; i < 10; i++)
            {
                var orderId = waiter.PlaceOrder("poo", i % 2 == 0);
                bus.SubscribeByCorrelationId(monitor, orderId);
            }

            Console.ReadLine();
        }