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); }
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(); }