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); }
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); }