Ejemplo n.º 1
0
        public async Task StartJob()
        {
            Job currentJob;

            if (PendingJobs.NotEmpty() && !Cancelled)
            {
                lock (PendingJobs)
                    currentJob = PendingJobs.Dequeue();
                lock (ScheduledJobs)
                    ScheduledJobs.Add(currentJob);
                await jobSemaphore.WaitAsync();

                if (ScheduledJobs.NotEmpty() && !Cancelled)
                {
                    lock (ScheduledJobs)
                        ScheduledJobs.Remove(currentJob);
                    lock (ExecutingJobs)
                        ExecutingJobs.Add(currentJob);
                    await currentJob.Execute(ImageMaker);

                    if (!Cancelled)
                    {
                        lock (ExecutingJobs)
                            ExecutingJobs.Remove(currentJob);
                    }
                    jobSemaphore.Release();
                }
            }
        }
Ejemplo n.º 2
0
        public Task ScheduleJob(Envelope envelope)
        {
            if (!envelope.ExecutionTime.HasValue)
            {
                throw new ArgumentOutOfRangeException(nameof(envelope), "No value for ExecutionTime");
            }

            ScheduledJobs.Enqueue(envelope.ExecutionTime.Value, envelope);
            return(Task.CompletedTask);
        }
Ejemplo n.º 3
0
        public void Dispose()
        {
            if (_hasStopped)
            {
                StopAsync(Settings.Cancellation).GetAwaiter().GetResult();
            }

            Settings.Cancel();

            Runtime.Dispose();

            ScheduledJobs.Dispose();
        }
Ejemplo n.º 4
0
        public async Task Activate(LocalWorkerSender localWorker, CapabilityGraph capabilities, JasperRuntime runtime,
                                   GenerationRules generation, PerfTimer timer)
        {
            timer.MarkStart("ServiceBusActivator");

            _handlers.Compile(generation, runtime, timer);


            var capabilityCompilation = capabilities.Compile(_handlers, Serialization, _channels, runtime, _transports, Lookup);



            var transports = _transports.Where(x => _settings.StateFor(x.Protocol) != TransportState.Disabled)
                             .ToArray();

            timer.Record("WorkersGraph.Compile", () =>
            {
                _settings.Workers.Compile(_handlers.Chains.Select(x => x.MessageType));
            });



            localWorker.Start(_persistence, Workers);

            if (!_settings.DisableAllTransports)
            {
                timer.MarkStart("ApplyLookups");

                await _settings.ApplyLookups(Lookup);

                timer.MarkFinished("ApplyLookups");


                timer.Record("ChannelGraph.Start",
                             () => { _channels.As <ChannelGraph>().Start(_settings, transports, Lookup, capabilities, Logger, Workers); });

                ScheduledJobs.Start(Workers);
            }

            runtime.Capabilities = await capabilityCompilation;
            if (runtime.Capabilities.Errors.Any() && _settings.ThrowOnValidationErrors)
            {
                throw new InvalidSubscriptionException(runtime.Capabilities.Errors);
            }

            timer.MarkFinished("ServiceBusActivator");
        }
Ejemplo n.º 5
0
        public void SetRunning(bool running, string jobName)
        {
            var allJobs  = Repo.GetAll();
            var storeJob = allJobs.FirstOrDefault(x => x.Name == jobName);

            if (storeJob != null)
            {
                storeJob.Running = running;
                Repo.Update(storeJob);
            }
            else
            {
                var job = new ScheduledJobs {
                    Running = running, Name = jobName
                };
                Repo.Insert(job);
            }
        }
Ejemplo n.º 6
0
        public void Record(string jobName)
        {
            var allJobs  = Repo.GetAll();
            var storeJob = allJobs.FirstOrDefault(x => x.Name == jobName);

            if (storeJob != null)
            {
                storeJob.LastRun = DateTime.UtcNow;
                Repo.Update(storeJob);
            }
            else
            {
                var job = new ScheduledJobs {
                    LastRun = DateTime.UtcNow, Name = jobName
                };
                Repo.Insert(job);
            }
        }
Ejemplo n.º 7
0
        public void Connect()
        {
            var path = Connection.GetProperty <string>("Path");

            if (System.IO.File.Exists(path))
            {
                var config   = System.IO.File.ReadAllText(path);
                var settings = new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.All
                };
                data = Newtonsoft.Json.JsonConvert.DeserializeObject <ScheduledJobs>(config, settings);
            }
            else
            {
                data = new ScheduledJobs();
            }
        }
Ejemplo n.º 8
0
 public void Dispose()
 {
     ScheduledJobs.Dispose();
 }