示例#1
0
        internal void ApplyTo(Configuration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.IsUsingInMemoryCommandScheduling(false);

            var container = configuration.Container;

            container.Register(c => configuration);

            container.RegisterDefaultClockName()
            .Register <ISchedulerClockRepository>(
                c => c.Resolve <SchedulerClockRepository>())
            .Register <IETagChecker>(
                c => c.Resolve <SqlEventStoreEventStoreETagChecker>())
            .Register <ISchedulerClockTrigger>(
                c => c.Resolve <SchedulerClockTrigger>());

            configuration.Container
            .Resolve <SqlCommandSchedulerPipelineInitializer>()
            .Initialize(configuration);

            var commandSchedulerResolver = new CommandSchedulerResolver(container);

            container
            .Register(
                c => new SchedulerClockTrigger(
                    c.Resolve <CommandSchedulerDbContext>,
                    async(serializedCommand, result, db) =>
            {
                await ConfigurationExtensions.DeserializeAndDeliver(commandSchedulerResolver, serializedCommand, db);

                result.Add(serializedCommand.Result);
            }))
            .Register <ISchedulerClockTrigger>(c => c.Resolve <SchedulerClockTrigger>());

            foreach (var configure in configureActions)
            {
                configure(configuration);
            }
        }
        internal void ApplyTo(Configuration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            configuration.IsUsingInMemoryCommandScheduling(false);

            var container = configuration.Container;

            container.Register(c => configuration);

            container.RegisterDefaultClockName()
                     .Register<ISchedulerClockRepository>(
                         c => c.Resolve<SchedulerClockRepository>())
                     .Register<IETagChecker>(
                         c => c.Resolve<SqlEventStoreEventStoreETagChecker>())
                     .Register<ISchedulerClockTrigger>(
                         c => c.Resolve<SchedulerClockTrigger>());

            configuration.Container
                         .Resolve<SqlCommandSchedulerPipelineInitializer>()
                         .Initialize(configuration);

            var commandSchedulerResolver = new CommandSchedulerResolver(container);

            container
                .Register(
                    c => new SchedulerClockTrigger(
                             c.Resolve<CommandSchedulerDbContext>,
                             async (serializedCommand, result, db) =>
                             {
                                 await ConfigurationExtensions.DeserializeAndDeliver(commandSchedulerResolver, serializedCommand, db);

                                 result.Add(serializedCommand.Result);
                             }))
                .Register<ISchedulerClockTrigger>(c => c.Resolve<SchedulerClockTrigger>());

            foreach (var configure in configureActions)
            {
                configure(configuration);
            }
        }