public void Subscribe(IIntegrationEventHandler handler) { var eventType = handler.GetType().BaseType.GetGenericArguments().First(); if (!_handlers.ContainsKey(eventType)) { if (!_persistentConnection.IsConnected) { _policy.Execute((context) => _persistentConnection.TryConnect(), new Dictionary <string, object>() { { "logmessage", "RabbitMQ Client could not connect " } }); } _persistentConnection.CreateChannel(); _persistentConnection.AddRoutingKey(eventType.Name); _handlers.Add(eventType, handler); } }