/// <summary>
        /// Init the module with provided <see cref="LogicalPriorityMapper"/>
        /// </summary>
        /// <param name="mapper"></param>
        /// <param name="routeFinder">custom route finder</param>
        /// <returns></returns>
        public RabbitMqModule Load(LogicalPriorityMapper mapper, IRouteFinder routeFinder = null)
        {
            var internalBus = InternalBus.Current;
            var logger = DependencyResolver.Current.GetService<ILogger>() ?? new NullLogger();
            _rabbitBus = new RabbitMqBus(logger, internalBus, mapper, MessageQueueConnectionString, Environment, SetupQueues);
            if (routeFinder != null)
            {
                _rabbitBus.SetRouteFinder(routeFinder);
            }
            InternalBus.Current = new RabbitMqBusAdapter(_rabbitBus);

            Global.PendingJobCount = _rabbitBus.GetMessageCount;
            Burrow.Global.DefaultConsumerBatchSize = ushort.Parse(ConfigurationManager.AppSettings["TaskConcurrencyLevel"] ?? "4");
            Burrow.Global.PreFetchSize = uint.Parse(ConfigurationManager.AppSettings["PreFetchSize"] ?? ((Burrow.Global.DefaultConsumerBatchSize) * 2).ToString(CultureInfo.InvariantCulture));
            return this;
        }