public void RegisterWithRestartMechanism(IUnityContainer container, FileProcessorEndpoint fileProcessorEndpoint)
        {
            var producerConsumerQueue = new FileProducerConsumerQueue(fileProcessorEndpoint.NumberOfConsumers,
                                                                      container.Resolve <IFileProcessResultHandler>(fileProcessorEndpoint.Name),
                                                                      container.Resolve <IFileHandler>(fileProcessorEndpoint.Name));

            var fileThroughputAlerter = new FileThroughPutAlerter(producerConsumerQueue, fileProcessorEndpoint.PollingRestartInterval);

            var fileProcessor = new PollingBasedFileProcessor(fileProcessorEndpoint,
                                                              fileThroughputAlerter,
                                                              container.Resolve <IFileFilter>(fileProcessorEndpoint.Name));

            fileThroughputAlerter.Alert += (sender, args) => fileProcessor.Restart();

            container.RegisterInstance(typeof(IHandleFiles),
                                       fileProcessorEndpoint.Name,
                                       fileThroughputAlerter);

            container.RegisterInstance(typeof(IFileProcessor),
                                       fileProcessorEndpoint.Name,
                                       fileProcessor);
        }