public void Install(IWindsorContainer container, IConfigurationStore store) { container.DependsOnFacility <TypedFactoryFacility>(); container.Register( Component.For <IConfigProvider>().ImplementedBy <InMemoryConfigProvider>().LifestyleSingleton(), Component.For <ITargetIndexingConfig>().ImplementedBy <TargetIndexingConfig>().LifestyleSingleton(), Component.For <ISourceScrollConfig>().ImplementedBy <SourceScrollConfig>().LifestyleSingleton() ); container.Register( Component.For <IEsIndexClient>().ImplementedBy <EsIndexClient>().LifestyleTransient(), Component.For <IEsScrollClient>().ImplementedBy <EsScrollClient>().LifestyleTransient() ); container.Register( Component.For <IndexWorker>().LifestyleTransient(), Component.For <ScrollWorker>().LifestyleTransient(), Component.For <IIndexWorkerFactory>().AsFactory().LifestyleSingleton(), Component.For <IScrollWorkerFactory>().AsFactory().LifestyleSingleton()); container.Register( Component.For <ITap <EsDocument> >().ImplementedBy <EsScrollerStep>().LifestyleSingleton(), Component.For <ITransformer <EsDocument, List <EsDocument> > >() .ImplementedBy <EsDocumentBatcherStep>() .LifestyleSingleton() .DynamicParameters((k, d) => { d["batchSize"] = container.Resolve <ITargetIndexingConfig>().BatchSize; }), Component.For <ISink <List <EsDocument> > >().ImplementedBy <EsIndexerStep>().LifestyleSingleton()); }