public Task InvokeAsync(IServiceProvider serviceProvider, SubscriptionInfo subscriptionInfo, MqttApplicationMessageReceivedEventArgs messageReceived)
        {
            var converterType = _eventProvider.GetConverterType(subscriptionInfo.EventName);
            var converter     = ((Serializers.IEventDeserializer <object>)serviceProvider.GetService(converterType));

            var message  = messageReceived.ApplicationMessage;
            var eventArg = converter.Deserialize(message.Payload);
            //_eventProvider.SetTopicInfo(subscriptionInfo.EventName, eventArg, message.Topic);

            var contextType = typeof(EventContext <>).MakeGenericType(subscriptionInfo.EventType);
            var context     = Activator.CreateInstance(contextType, new object[] { eventArg, messageReceived, _eventProvider });

            var consumer = serviceProvider.GetService(subscriptionInfo.ConsumerType);

            return((Task)consumer.GetType()
                   .GetMethod(nameof(IConsumer <object> .ConsumeAsync))
                   .Invoke(consumer, new object[] { context }));
        }