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); }
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); }
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); }
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); }
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); }