Пример #1
0
        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);
                        }
                    }
                }
            }
        }
Пример #2
0
        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");
        }
Пример #3
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineBlue("Cordinator{0}'s PostRestart called because: {1} ", Self.Path.Name, reason.Message);
     base.PostRestart(reason);
 }
Пример #4
0
 protected override void PreStart()
 {
     ColorConsole.WriteLineBlue("Cordinator{0}'s PreStart called.", Self.Path.Name);
     InitializeWorker("worker");
 }