private void ParseTxtFile(string fileName) { bool fileFound = File.Exists(fileName); if (!fileFound) { fileName = Path.Combine(Environment.CurrentDirectory, fileName); fileFound = File.Exists(fileName); if (!fileFound) { ColorConsole.WriteLineRed("Task file not found."); return; } } var fileLines = File.ReadAllLines(fileName); int jobId = 0; foreach (var line in fileLines) { jobId++; var job = new ProcessJobMessage(line, jobId); _jobsToProcessed.Add(job); } }
private void HandleScheduleAllJobs() { _jobsToProcessed.Clear(); foreach (var taskItem in this.jobManagerViewModel.Tasks) { var job = new ProcessJobMessage(taskItem.Description, taskItem.TaskID, taskItem.TimeOut, Self); _jobsToProcessed.Add(taskItem.TaskID, job); } // schedule jobs Context.System.Scheduler.Advanced.ScheduleRepeatedly(TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(10), () => { if (_jobsToProcessed.Count > 0) { if (_api.Ask <Routees>(new GetRoutees()).Result.Members.Any()) { var currentJobMsg = _jobsToProcessed.Values.ElementAt(0); _api.Tell(currentJobMsg); // _jobsToProcessed.Remove(currentJobMsg.ID); } } }); // create scheduler for uprocessed jobs _jobScheduler = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable( TimeSpan.FromMinutes(_initialDelayInMinutes), //initial delay in minutes TimeSpan.FromSeconds(_intervalInSeconds), // interval Self, new ProcessUnfinishedJobs(), Self); }
private void Ready() { ColorConsole.WriteLineGreen("Commander's current state is Ready."); Receive <ProcessJobMessage>(job => { _currentJob = job; // ask the coordinator for job _coordinator.Tell(new CanAcceptJobMessage(job.Description, job.ID)); // move to next state BecomeAsking(); }); Receive <JobCompletedMessage>(job => { // send response to client _currentJob.Client.Tell(job); ColorConsole.WriteLineGreen($"Task {job.ID} is completed by commander."); }); Receive <JobFailedMessage>(job => { // send response to client _currentJob.Client.Tell(job); ColorConsole.WriteLineGreen($"Task {job.ID} is failed."); }); }
private void Ready() { ColorConsole.WriteLineGreen("Commander's current state is Ready."); Receive <ProcessJobMessage>(job => { ColorConsole.WriteLineWhite($"Commander has received Task {job.ID}.{job.Description} for processing."); _currentJob = job; // ask the coordinator for job _coordinator.Tell(new CanAcceptJobMessage(job.Description, job.ID)); // move to next state BecomeAsking(); }); Receive <JobCompletedMessage>(job => { // send response to parent _currentJob.Client.Tell(job); _logger.Debug($"Task {job.ID} is completed by commander and {Sender.Path.Name}."); }); Receive <JobFailedMessage>(job => { // send response to parent _currentJob.Client.Tell(job); _logger.Debug("Commander has received JobFailedMessage from {0} for Task ID: {1}", Sender.Path.Name, job.ID); ColorConsole.WriteLineGreen($"Task {job.ID} is failed."); }); }
private void HandleProcessJob() { if (_jobsToProcessed.Count > 0) { _currentJobMsg = _jobsToProcessed[0]; Context.ActorSelection(ActorPaths.ValidatorActor.Path).Ask(_currentJobMsg.Description).PipeTo(Self); _jobsToProcessed.RemoveAt(0); } else { ColorConsole.WriteLineYellow("All jobs are processed from job pool queue.."); _jobScheduler.Cancel(); } }