Exemplo n.º 1
0
        internal void Run()
        {
            Console.WriteLine("Starting queue reader");

            while (true)
            {
                Task.Delay(2000);

                using (var dbContext = new MassdropContext())
                {
                    var jobs = (from jobItem in dbContext.UrlJobs
                               where jobItem.JobStatus == JobStatus.New
                                select jobItem).ToList();

                    foreach (Job jobItem in jobs)
                    {
                        jobItem.JobStatus = JobStatus.InQueue;                        
                    }

                    dbContext.SaveChanges();

                    jobs.ForEach(x => _JobsQueue.Enqueue(x));
                }

             
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the job by identifier.
        /// </summary>
        /// <param name="dbContext">The database context.</param>
        /// <param name="jobId">The job identifier.</param>
        /// <returns></returns>
        public static UrlJob GetUrlJobById(MassdropContext dbContext, int jobId)
        {
            var jobItem = (from job in dbContext.UrlJobs
                           where job.Id == jobId
                           select job).FirstOrDefault();

            return jobItem;
        }
Exemplo n.º 3
0
 public JobsController()
 {
     _dbContext = new MassdropContext();
 }
Exemplo n.º 4
0
        internal void Run()
        {
            Console.WriteLine("Starting queue executer");

            while (true)
            {
                Job objTempJobItem;

                Task.Delay(1000);

                // Will try to get item from queue
                if (_JobsQueue.TryDequeue(out objTempJobItem))
                {
                    Console.WriteLine(string.Format("Task ID: {0} is working on job ID:{1}",Task.CurrentId, objTempJobItem.Id));

                    // Will update it's status and save it in DB
                    using (var dbContext = new MassdropContext())
                    {
                        var jobItem1 = (from jobItem in dbContext.UrlJobs
                                       where jobItem.Id == objTempJobItem.Id
                                       select jobItem).FirstOrDefault();

                        jobItem1.JobStatus = JobStatus.InProcess;

                        dbContext.SaveChanges();
                    }

                    // Will get the executer
                    JobExecuter executerItem = GetJobExecuter(objTempJobItem);

                    if (executerItem != null)
                    {
                        JobStatus finalStatus = JobStatus.Done;
                        string result = null;

                        try
                        {
                            Console.WriteLine(string.Format("Task ID: {0} is executing on job ID:{1}", Task.CurrentId, objTempJobItem.Id));
                            // Will run the executer job
                            result = executerItem.Execute();
                            Console.WriteLine(string.Format("Task ID: {0} is executed on job ID:{1}", Task.CurrentId, objTempJobItem.Id));
                        }
                        catch (Exception ex)
                        {
                            result = ex.Message;
                            finalStatus = JobStatus.Failed;
                        }
                        finally
                        {
                            // Will save the new status and the result in the db
                            using (var dbContext = new MassdropContext())
                            {
                                var jobItem2 = (from jobItem in dbContext.UrlJobs
                                                where jobItem.Id == objTempJobItem.Id
                                                select jobItem).FirstOrDefault();

                                jobItem2.Result = result;
                                jobItem2.JobStatus = finalStatus;

                                dbContext.SaveChanges();
                            }
                        }
                        

                        Console.WriteLine(string.Format("Task ID: {0} is saved results on job ID:{1}", Task.CurrentId, objTempJobItem.Id));
                    }
                }
            } 
        }