Ejemplo n.º 1
0
        public void Subscribe <T>(EventsHandlers.EventHandler <T> eventHandler) where T : Event
        {
            var name = typeof(T).FullName;

            if (!connection.IsConnected)
            {
                connection.TryConnect();
            }
            if (handlers.ContainsKey(name))
            {
                handlers[name].Add(eventHandler);
            }
            else
            {
                policy.Execute(() =>
                {
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueBind(queue: queue, exchange: "myExchange", routingKey: name);
                        handlers.Add(name, new List <IEventsHandler>());
                        handlers[name].Add(eventHandler);
                        eventTypes.Add(typeof(T));
                    }
                });
            }
        }
Ejemplo n.º 2
0
        public void Unsubscribe <T>(EventsHandlers.EventHandler <T> eventHandler) where T : Event
        {
            var name = typeof(T).FullName;

            if (!connection.IsConnected)
            {
                connection.TryConnect();
            }
            if (handlers.ContainsKey(name) && handlers[name].Contains(eventHandler))
            {
                handlers[name].Remove(eventHandler);
            }
        }