public RabbitLightContext(IServiceProvider sp, ContextConfig config)
        {
            _config = config;
            _config.Validate();
            _logger = CreateLogger <RabbitLightContext>();

            StartMonitor();

            var consumerPool = new ConsumerConnectionPool(_config.ConnConfig, CreateLogger <ConsumerConnectionPool>());

            _consumerManager = new ConsumerManager(sp, consumerPool, _config);

            var publisherPool = new PublisherConnectionPool(_config.ConnConfig, CreateLogger <PublisherConnectionPool>());

            Publisher = new Publisher.Publisher(publisherPool);

            ILogger <T> CreateLogger <T>() => sp.GetService <ILoggerFactory>()?.CreateLogger <T>();
        }