protected BaseDataAnalysisActor(IDataAnalyzer analyzer, string sourcePath) { Analyzer = analyzer; Logger = Context.GetLogger(); CsvReaderActor = Context.ActorOf(Props.Create <CsvReaderActor <TRowType, TRowMap> >(sourcePath), $"CsvReaderActor"); Receive <InitiateAnalysisMessage>(message => { Logger.Info("Received InitiateAnalysisMessage, Proceeding with file analysis."); CsvReaderActor.Tell(new InitiateAnalysisMessage()); }); Receive <PublishResultsMessage>(message => { Logger.Info("Publishing Results."); Logger.Info($"Results - {Analyzer.GetResults().First().ToString()}"); }); Receive <DataRowMessage>(message => ProcessRow(message)); Receive <FileAnalysisFinishedMessage>(message => PostAnalysis()); }