public void Subscribe(Guid id, SubscribeMode mode) { Subscribers.AddOrUpdate(id, new Subscriber { Id = id, Mode = mode }, (s, u) => new Subscriber { Id = id, Mode = mode }); if (mode == SubscribeMode.PermanentConsumer) { Persistence.SaveQueue(this); } }
public void Subscribe(EventType kind, IEventHandler handler) { if (handler == null || string.IsNullOrWhiteSpace(handler.HandlerKey)) { throw new ArgumentNullException("handler"); } Subscribers.AddOrUpdate(kind, new List <IEventHandler>(10) { handler }, (key, list) => { var index = list.FindIndex(m => m == handler); if (index == -1) { list.Add(handler); } return(list); }); Timer.Start(); }