public AtomDocumentRetriever(SubscriptionManager burstManager, ILoggingAdapter adapter, IAtomDocumentRepository documentRepository)
 {
     _documentRepository = documentRepository;
     this.burstManager = burstManager;
     _adapter = adapter;
     atomDocumentSerialiser = new AtomDocumentSerialiser();
 }
        protected override void ConfigureIoc()
        {
            var actorSystemFactory = new ShardedActorSystemFactory(AkkaHostingPort, ActorSystemName, PersistenceSectionName, AkkaSeedNodes);
            var actorSystem = actorSystemFactory.GetActorSystem();
            var atomSettings = new ConfigurableAtomDocumentSettings(EntriesPerDocument);

            var subscriptionManager = new SubscriptionManager(actorSystem, atomSettings);
            var eventPublisher = new EventPublisher(actorSystem);
            var loggingEventPublisher = new LoggingEventPublisherDecorator(eventPublisher);
            IocContainer.Register<IEventPublisher>(loggingEventPublisher);

            IocContainer.Register<ISubscriptionManager>(subscriptionManager);

            var documentRetriever = new LoggingAtomDocumentRetrieverDecorator(new AtomDocumentRetriever(subscriptionManager, actorSystem.Log, new InMemoryAtomDocumentRepository()));
            IocContainer.Register<IAtomDocumentRetriever>(documentRetriever);

            IocContainer.RegisterMultiple<IOwinConfiguration, WebApiOwinConfiguration>(IocLifecycle.PerRequest);
        }