Exemplo n.º 1
0
 private void PendingJobsItemEnqueued(object sender, IJobDetail e)
 {
     if (_pendingJobs.TryDequeue(out var jobDetail))
     {
         Task.Run(() => ExecuteJob(jobDetail));
     }
 }
Exemplo n.º 2
0
        public async Task <IJobDetail> ScheduleJob(IJobDetail jobDetail)
        {
            jobDetail.Status    = JobStatus.Pending;
            jobDetail.CreatedAt = DateTime.UtcNow;
            await Task.Run(() =>
            {
                _pendingJobs.Enqueue(jobDetail);
                Task.Run(() => _eventManager.PublishEvent <JobCreatedEventArgs>(new JobCreatedEventArgs {
                    JobDetail = jobDetail
                }));
            });

            return(jobDetail);
        }
Exemplo n.º 3
0
        private async Task ExecuteJob(IJobDetail jobDetail)
        {
            var scheduler = await _schedulerFactory.GetScheduler();

            var job = JobBuilder.Create <Crawler>()
                      .WithIdentity(jobDetail.Id.ToString(), jobDetail.Name)
                      .UsingJobData("Id", jobDetail.Id.ToString())
                      .UsingJobData("Name", jobDetail.Name)
                      .UsingJobData("Url", jobDetail.Url)
                      .UsingJobData("Status", (int)jobDetail.Status)
                      .UsingJobData("CreatedAt", jobDetail.CreatedAt.ToString(CultureInfo.InvariantCulture))
                      .UsingJobData("CompletedAt", jobDetail.CompletedAt.ToString(CultureInfo.InvariantCulture))
                      .Build();

            var trigger = TriggerBuilder.Create()
                          .WithIdentity(jobDetail.Id.ToString(), jobDetail.Name)
                          .StartNow()
                          .Build();

            await scheduler.ScheduleJob(job, trigger);

            await scheduler.Start();
        }