protected override void Setup(FeatureConfigurationContext context)
        {
            DocumentStoreManager.GetUninitializedDocumentStore <StorageType.Outbox>(context.Settings)
            .CreateIndexOnInitialization(new OutboxRecordsIndex());

            var timeToKeepDeduplicationData = context.Settings.GetOrDefault <TimeSpan?>(TimeToKeepDeduplicationData) ?? DeduplicationDataTTLDefault;

            context.Services.AddTransient <IOutboxStorage>(
                sp => new OutboxPersister(context.Settings.EndpointName(), sp.GetRequiredService <IOpenTenantAwareRavenSessions>(), timeToKeepDeduplicationData));

            var frequencyToRunDeduplicationDataCleanup = context.Settings.GetOrDefault <TimeSpan?>(FrequencyToRunDeduplicationDataCleanup) ?? TimeSpan.FromMinutes(1);

            context.RegisterStartupTask(builder =>
            {
                var store = DocumentStoreManager.GetDocumentStore <StorageType.Outbox>(context.Settings, builder);
                return(new OutboxCleaner(new OutboxRecordsCleaner(store), frequencyToRunDeduplicationDataCleanup, timeToKeepDeduplicationData));
            });

            context.Settings.AddStartupDiagnosticsSection(
                "NServiceBus.Persistence.RavenDB.Outbox",
                new
            {
                FrequencyToRunDeduplicationDataCleanup = frequencyToRunDeduplicationDataCleanup,
                TimeToKeepDeduplicationData            = timeToKeepDeduplicationData,
            });
        }
        protected override void Setup(FeatureConfigurationContext context)
        {
            //var store = DocumentStoreManager.GetDocumentStore<StorageType.Timeouts>(context.Settings);
            DocumentStoreManager.GetUninitializedDocumentStore <StorageType.Timeouts>(context.Settings)
            .CreateIndexOnInitialization(new TimeoutsIndex());

            context.Container.ConfigureComponent(b =>
            {
                var store = DocumentStoreManager.GetDocumentStore <StorageType.Timeouts>(context.Settings, b);
                return(new TimeoutPersister(store));
            }, DependencyLifecycle.InstancePerCall);

            context.Container.ConfigureComponent(b =>
            {
                var store = DocumentStoreManager.GetDocumentStore <StorageType.Timeouts>(context.Settings, b);
                return(new QueryTimeouts(store, context.Settings.EndpointName()));
            }, DependencyLifecycle.SingleInstance); // Needs to be SingleInstance because it contains cleanup state

            context.Container.ConfigureComponent(typeof(QueryCanceller), DependencyLifecycle.InstancePerCall);
            context.RegisterStartupTask(b => b.Build <QueryCanceller>());
        }