public void Apply(IServiceBusConfiguration configuration)
        {
            Guard.AgainstNull(configuration, nameof(configuration));

            var transactionScopeElement = TransactionScopeSection.Get();

            configuration.TransactionScope = transactionScopeElement != null
                ? new TransactionScopeConfiguration
            {
                Enabled        = transactionScopeElement.Enabled,
                IsolationLevel = transactionScopeElement.IsolationLevel,
                TimeoutSeconds = transactionScopeElement.TimeoutSeconds
            }
                : new TransactionScopeConfiguration();

            var section = ServiceBusSection.Get();

            if (section == null)
            {
                return;
            }

            configuration.CreateQueues             = section.CreateQueues;
            configuration.CacheIdentity            = section.CacheIdentity;
            configuration.RegisterHandlers         = section.RegisterHandlers;
            configuration.RemoveMessagesNotHandled = section.RemoveMessagesNotHandled;
            configuration.CompressionAlgorithm     = section.CompressionAlgorithm;
            configuration.EncryptionAlgorithm      = section.EncryptionAlgorithm;
        }
        public void Apply(IEventStoreConfiguration configuration)
        {
            var transactionScopeElement = TransactionScopeSection.Get();

            configuration.TransactionScope = transactionScopeElement != null
                ? new TransactionScopeConfiguration
            {
                Enabled        = transactionScopeElement.Enabled,
                IsolationLevel = transactionScopeElement.IsolationLevel,
                TimeoutSeconds = transactionScopeElement.TimeoutSeconds
            }
                : new TransactionScopeConfiguration();

            var eventProcessorSection = EventStoreSection.Get();

            if (eventProcessorSection == null)
            {
                return;
            }

            configuration.CompressionAlgorithm      = eventProcessorSection.CompressionAlgorithm;
            configuration.EncryptionAlgorithm       = eventProcessorSection.EncryptionAlgorithm;
            configuration.ProjectionEventFetchCount = eventProcessorSection.ProjectionEventFetchCount;
            configuration.ProjectionThreadCount     = eventProcessorSection.ProjectionThreadCount;
            configuration.SequenceNumberTailThreadWorkerInterval = eventProcessorSection.SequenceNumberTailThreadWorkerInterval;

            configuration.DurationToSleepWhenIdle =
                eventProcessorSection.DurationToSleepWhenIdle ??
                EventStoreConfiguration.DefaultDurationToSleepWhenIdle;
        }