Ejemplo n.º 1
0
        public static void CancelPeriodic <TJob, TArgs>(this IJobPublisher publisher, TArgs jobArgs, string groupKey)
        {
            var periodicRunInfo = new PeriodicRunInfo
            {
                NextRunTime    = DateTime.MinValue,
                LastRunTimeUtc = DateTime.MinValue, //important to replace existing job
            };

            publisher.Publish(new[] { JobInfo.For <TJob, TArgs>(jobArgs, periodicRunInfo.NextRunTime, groupKey, null, periodicRunInfo) });
        }
Ejemplo n.º 2
0
        public static void Publish <TJob, TArgs>(this IJobPublisher publisher, IEnumerable <TArgs> jobArgs, DateTime?runAtUtc = null, int?jobTimeoutMs = null,
                                                 PeriodicRunInfo periodicRunInfo = null)
        {
            var jobs = new List <JobInfo>();

            foreach (var jobArg in jobArgs)
            {
                jobs.Add(JobInfo.For <TJob, TArgs>(jobArg, runAtUtc, null, jobTimeoutMs, periodicRunInfo));
            }

            publisher.Publish(jobs);
        }
Ejemplo n.º 3
0
        public static void PublishPeriodic <TJob, TArgs>(this IJobPublisher publisher, TArgs jobArgs, string groupKey, int repeatSeconds,
                                                         DateTime?runAtUtc = null, DateTime?endAtUtc = null, int?jobTimeoutMs = null)
        {
            var periodicRunInfo = new PeriodicRunInfo
            {
                RepeatSeconds = repeatSeconds,
                NextRunTime   = runAtUtc ?? DateTime.UtcNow.AddSeconds(repeatSeconds),
                EndAtUtc      = endAtUtc
            };

            publisher.Publish(new[] { JobInfo.For <TJob, TArgs>(jobArgs, periodicRunInfo.NextRunTime, groupKey, jobTimeoutMs, periodicRunInfo) });
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
0
        public static void PublishPeriodic <TJob, TArgs>(this IJobPublisher publisher, TArgs jobArgs, string groupKey, string cronExpression,
                                                         TimeZoneInfo timeZoneInfo = null, DateTime?runAtUtc = null, DateTime?endAtUtc = null, int?jobTimeoutMs = null)
        {
            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
            };

            publisher.Publish(new[] { JobInfo.For <TJob, TArgs>(jobArgs, periodicRunInfo.NextRunTime, groupKey, jobTimeoutMs, periodicRunInfo) });
        }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
0
 public static JobInfo For <TJob, TJobArgs>(TJobArgs jobArgs, DateTime?runAtUtc, string groupKey = null, int?jobTimeoutMs = null, PeriodicRunInfo periodicRunInfo = null)
 {
     return(new JobInfo
     {
         RunAtUtc = runAtUtc,
         JobType = typeof(TJob),
         ArgsType = typeof(TJobArgs),
         Args = jobArgs,
         TimeoutMs = jobTimeoutMs,
         GroupKey = groupKey,
         PeriodicRunInfo = periodicRunInfo
     });
 }
Ejemplo n.º 9
0
 public static JobInfo For <TJob, TJobArgs>(TJobArgs jobArgs, string groupKey = null, int?jobTimeoutMs = null, PeriodicRunInfo periodicRunInfo = null)
 {
     return(For <TJob, TJobArgs>(jobArgs, null, groupKey, jobTimeoutMs, periodicRunInfo));
 }
Ejemplo n.º 10
0
 public static JobInfo For <TJob, TJobArgs>(TJobArgs jobArgs, TimeSpan runIn, string groupKey = null, int?jobTimeoutMs = null, PeriodicRunInfo periodicRunInfo = null)
 {
     return(For <TJob, TJobArgs>(jobArgs, DateTime.UtcNow.Add(runIn), groupKey, jobTimeoutMs, periodicRunInfo));
 }