private void HandleProcessUnFinishedJobs(ProcessUnfinishedJobs msg) { if (_jobsToProcessed.Count() == 0) { var count = _taskList.Values.Where(x => x.Status == JobStatus.Completed).Count(); if (count == _taskList.Count()) { PrintSummary(); if (null != _stopWatch) { long totalProcessedTime = _stopWatch.ElapsedMilliseconds; TimeSpan taskDuration = TimeSpan.FromMilliseconds(totalProcessedTime); ColorConsole.WriteLineCyan($"Total time to process all jobs = {taskDuration.ToString(@"hh\:mm\:ss\:fff")}"); _stopWatch.Stop(); } _jobScheduler.Cancel(); } else { List <Job> failedtasks = _taskList.Values.Where(x => x.Status == JobStatus.Cancelled || x.Status == JobStatus.Timeout || x.Status == JobStatus.NotStarted || (x.Status == JobStatus.Started && DateTime.Now.Subtract(x.StartTime).TotalMinutes > _taskTimeout) ).ToList(); if (failedtasks.Count() > 0) { PrintSummary(); ColorConsole.WriteLineBlue("Processing unfinished jobs..."); foreach (Job task in failedtasks) { if (!_jobsToProcessed.ContainsKey(task.ID)) { _jobsToProcessed.Add(task.ID, new ProcessJobMessage(task.Description, task.ID, Self)); } } } else { List <Job> unFinishedtasks = _taskList.Values.Where(x => x.Status == JobStatus.Started && DateTime.Now.Subtract(x.StartTime).TotalMinutes < _taskTimeout).ToList(); if (unFinishedtasks.Count() == 0) { PrintSummary(); _jobScheduler.Cancel(); List <Job> failedJobs = _taskList.Values.Where(x => x.Status == JobStatus.Failed || x.Status == JobStatus.InvalidTask).ToList(); PrintFailedJobsSummary(failedJobs); } } } } }
protected override void PreStart() { ColorConsole.WriteLineBlue("Cordinator{0}'s PreStart called.", Self.Path.Name); //_taskWorker = Context.ActorOf(Context.DI().Props<WorkerActor>(), // ActorPaths.WorkerActor.Name); ITaskExecuter clientExecuter = new ClientTaskExecuter(); _taskWorker = Context.ActorOf(Props.Create <WorkerActor>(clientExecuter), "worker"); }
protected override void PostRestart(Exception reason) { ColorConsole.WriteLineBlue("Cordinator{0}'s PostRestart called because: {1} ", Self.Path.Name, reason.Message); base.PostRestart(reason); }
protected override void PreStart() { ColorConsole.WriteLineBlue("Cordinator{0}'s PreStart called.", Self.Path.Name); InitializeWorker("worker"); }