private async Task <bool> ProcessEvent(string eventName, string message)
        {
            if (_subsManager.HasSubscriptionsForEvent(eventName))
            {
                var subscriptions = _subsManager.GetHandlersForEvent(eventName);
                foreach (var subscription in subscriptions)
                {
                    var handler          = _integrationEventHandlerFactory.GetIntegrationEventHandler(subscription.HandlerType.FullName);
                    var eventType        = _subsManager.GetEventTypeByName(eventName);
                    var integrationEvent = JsonConvert.DeserializeObject(message, eventType);
                    var concreteType     = typeof(IIntegrationEventHandler <>).MakeGenericType(eventType);
                    await(Task) concreteType.GetMethod("Handle").Invoke(handler, new[] { integrationEvent });
                }

                return(true);
            }

            return(false);
        }
Пример #2
0
        private async Task <bool> ProcessEvent(string eventName, string message)
        {
            if (_subsManager.HasSubscriptionsForEvent(eventName))
            {
                var subscriptions = _subsManager.GetHandlersForEvent(eventName);

                foreach (var subscription in subscriptions)
                {
                    var handler          = _integrationEventHandlerFactory.GetIntegrationEventHandler(subscription.HandlerType.FullName);
                    var eventType        = _subsManager.GetEventTypeByName(eventName);
                    var integrationEvent = message.DeserializeJson(eventType);
                    var concreteType     = typeof(IIntegrationEventHandler <>).MakeGenericType(eventType);
                    var method           = concreteType.GetMethod("Handle");
                    if (method != null)
                    {
                        await((Task)method.Invoke(handler, new[] { integrationEvent })).ConfigureAwait(false);
                    }
                }

                return(true);
            }

            return(false);
        }