Exemplo n.º 1
0
        public static void Publish(TArgs args, DateTime runAtUtc, int?timeoutMs = null)
        {
            if (JobBatch.IsActive)
            {
                JobBatch.Add(JobInfo.For <TJob, TArgs>(args, runAtUtc, null, timeoutMs));
                return;
            }

            MassiveJobsMediator.DefaultInstance.Publish <TJob, TArgs>(args, runAtUtc, timeoutMs);
        }
Exemplo n.º 2
0
        protected static void Publish(TArgs args, string groupKey, int?timeoutMs = null)
        {
            var jobInfo = JobInfo.For <TJob, TArgs>(args, groupKey, timeoutMs);

            if (JobBatch.IsActive)
            {
                JobBatch.Add(jobInfo);
                return;
            }

            MassiveJobsMediator.DefaultInstance.Publish(jobInfo);
        }
Exemplo n.º 3
0
        public static void CancelPeriodic(string groupKey)
        {
            if (JobBatch.IsActive)
            {
                var periodicRunInfo = new PeriodicRunInfo
                {
                    NextRunTime    = DateTime.MinValue,
                    LastRunTimeUtc = DateTime.MinValue, //important to replace existing job
                };

                JobBatch.Add(JobInfo.For <TJob, VoidArgs>(null, periodicRunInfo.NextRunTime, groupKey, null, periodicRunInfo));
                return;
            }

            MassiveJobsMediator.DefaultInstance.CancelPeriodic <TJob>(groupKey);
        }
Exemplo n.º 4
0
        public static void PublishPeriodic(TArgs args, string groupKey, int repeatSec,
                                           DateTime?runAtUtc = null, DateTime?endAtUtc = null, int?timeoutMs = null)
        {
            if (JobBatch.IsActive)
            {
                var periodicRunInfo = new PeriodicRunInfo
                {
                    RepeatSeconds = repeatSec,
                    NextRunTime   = runAtUtc ?? DateTime.UtcNow.AddSeconds(repeatSec),
                    EndAtUtc      = endAtUtc
                };

                JobBatch.Add(JobInfo.For <TJob, TArgs>(args, periodicRunInfo.NextRunTime, groupKey, timeoutMs, periodicRunInfo));
                return;
            }

            MassiveJobsMediator.DefaultInstance.PublishPeriodic <TJob, TArgs>(args, groupKey, repeatSec, runAtUtc, endAtUtc, timeoutMs);
        }
Exemplo n.º 5
0
        public static void PublishPeriodic(TArgs args, string groupKey, string cronExpression,
                                           TimeZoneInfo timeZoneInfo = null, DateTime?runAtUtc = null, DateTime?endAtUtc = null, int?timeoutMs = null)
        {
            if (JobBatch.IsActive)
            {
                if (!Cron.CronSequenceGenerator.IsValidExpression(cronExpression))
                {
                    throw new ArgumentException($"Invalid cron expression ('{cronExpression}')", nameof(cronExpression));
                }

                var periodicRunInfo = new PeriodicRunInfo
                {
                    NextRunTime = runAtUtc ?? DateTime.UtcNow,
                    EndAtUtc    = endAtUtc,
                    CronExp     = cronExpression,
                    TzId        = timeZoneInfo?.Id
                };

                JobBatch.Add(JobInfo.For <TJob, TArgs>(args, periodicRunInfo.NextRunTime, groupKey, timeoutMs, periodicRunInfo));
                return;
            }

            MassiveJobsMediator.DefaultInstance.PublishPeriodic <TJob, TArgs>(args, groupKey, cronExpression, timeZoneInfo, runAtUtc, endAtUtc, timeoutMs);
        }