public void RemoveSubscription <T>(IIntegrationEventHandler <T> integrationEventHandler)
            where T : IntegrationEvent
        {
            var eventName       = GetEventKey <T>();
            var handlerToRemove = DoFindSubscriptionToRemove(eventName, integrationEventHandler.GetType());

            DoRemoveHandler(eventName, handlerToRemove);
        }
Exemplo n.º 2
0
        public void Unsubscribe(IIntegrationEventHandler handler)
        {
            var eventType = handler.GetType().BaseType.GetGenericArguments().First();

            if (_handlers.ContainsKey(eventType))
            {
                _handlers.Remove(eventType);
                if (!_persistentConnection.IsConnected)
                {
                    _policy.Execute((context) => _persistentConnection.TryConnect(), new Dictionary <string, object>()
                    {
                        {
                            "logmessage",
                            "RabbitMQ Client could not connect "
                        }
                    });
                }
                _persistentConnection.CreateChannel();
                _persistentConnection.RemoveRoutingKey(eventType.Name);
            }
        }
        public void Subscribe <TEvent>(IIntegrationEventHandler <TEvent> handler) where TEvent : IntegrationEvent
        {
            string handlerName = handler.GetType().Name;
            string eventName   = typeof(TEvent).FullName;


            _logger.Information("Handler {HandlerName} is subscribing to event {EventName}",
                                handlerName, eventName);

            RenewConnectionIfNeeded();

            using (var channel = _rabbitMqPersistentConnection.CreateModel())
            {
                channel.QueueBind(queue: _queueName ?? string.Empty,
                                  exchange: ExchangeName,
                                  routingKey: eventName,
                                  arguments: null);
            }

            InMemoryEventBus.Instance.Subscribe(handler);

            StartBasicConsume();
        }
        public void RemoveDynamicSubscription(string eventName, IIntegrationEventHandler <dynamic> handler)
        {
            var handlerToRemove = DoFindSubscriptionToRemove(eventName, handler.GetType());

            DoRemoveHandler(eventName, handlerToRemove);
        }
 public void AddDynamicSubscription(string eventName, IIntegrationEventHandler <dynamic> handler)
 {
     DoAddSubscription(handler.GetType(), eventName, isDynamic: true);
 }