protected override IMessageConsumeTopologyConfigurator CreateMessageTopology <T>(Type type)
        {
            var exchangeTypeSelector = new MessageExchangeTypeSelector <T>(ExchangeTypeSelector);

            var messageTopology = new RabbitMqMessageConsumeTopology <T>(_messageTopology.GetMessageTopology <T>(), exchangeTypeSelector,
                                                                         _publishTopology.GetMessageTopology <T>());

            OnMessageTopologyCreated(messageTopology);

            return(messageTopology);
        }
        protected override IMessagePublishTopologyConfigurator CreateMessageTopology <T>(Type type)
        {
            var exchangeTypeSelector = new MessageExchangeTypeSelector <T>(ExchangeTypeSelector);

            var messageTopology = new RabbitMqMessagePublishTopology <T>(_messageTopology.GetMessageTopology <T>(), exchangeTypeSelector);

            var connector = new ImplementedMessageTypeConnector <T>(this, messageTopology);

            ImplementedMessageTypeCache <T> .EnumerateImplementedTypes(connector);

            OnMessageTopologyCreated(messageTopology);

            return(messageTopology);
        }