private static void LongRunningLowPriorityMessages() { int messagesToAdd = 10; foreach (var car in cars) { for (int i = 0; i < messagesToAdd; i++) { var message = new Message(() => { Thread.Sleep(100); Console.WriteLine("Car Address: {0}, {1}", car.Address, "message processed"); }); queueManager.Enqueue(message, car); } } }
private static void HighPriorityMessages() { var timer = new System.Timers.Timer(1000); timer.Elapsed += (sender, args) => { foreach (var car in cars) { var message = new Message(() => { Console.WriteLine("Car Address: {0}, {1}", car.Address, "High priority message"); }); queueManager.Enqueue(message, cars[0], Priority.High); } }; timer.Start(); }
public void Enqueue(Message message, Car car, Priority priority = Priority.Low) { MessageQueue queue; if (_queueLookup.TryGetValue(car, out queue)) { queue.Add(message, priority); } }