I want to schedule a job every N minutes at X seconds, that is every 5(can be 1,3,5,10,15...n) minutes this is straight WithIntervalInMinutes(1). But I need addition to this trigger should be executed ad 2nd second of that trigger minute. For example Trigger starts now or at specified time lets say at 9:15 AM, with interval 5 minutes 2 seconds, then it should trigger 9:20:02, 9:25:02, 9:30:02 (02 is seconds of that minute)
so far i tried, fully working example
public class MyJobScheduler : IMyJobScheduler
{
private readonly IScheduler _scheduler;
public MyJobScheduler(IScheduler scheduler)
{
_scheduler = scheduler;
}
public void Start()
{
_scheduler.Start();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("ScrapGoldRateTrigger1", "group123").StartNow()
.WithSimpleSchedule(x => x
.RepeatForever()
.WithIntervalInSeconds(2)
)
.Build();
ITrigger trigger2_every5min_at_2_seconds = TriggerBuilder.Create()
.WithIdentity("ScrapGoldRateTrigger2", "group123").StartNow()
.WithSimpleSchedule(x => x
.RepeatForever()
.WithIntervalInMinutes(5) // it can be any minute frequency
.WithIntervalInSeconds(2)
)
.Build();
IJobDetail job1 = JobBuilder.Create<ScrapperCandlesHistoryJob>()
.WithIdentity("ScrapGoldRate", "group123")
.Build();
var listOfJobs =
new Dictionary<IJobDetail, IReadOnlyCollection<ITrigger>>() { { job1, new ITrigger[2] { trigger, trigger2_every5min_at_2_seconds } } };
_scheduler.ScheduleJobs(listOfJobs, replace: true, default);
}
trigger2_every5min_at_2_seconds this trigger is not working as expected. this should execute every 5 minutes at 2 seconds. or if configured every 3 minutes at 6 seconds means if trigger start time at 9:15, then 9:18:06, 9:21:06 and so on it should execute. Python i'm able to with this trigger Trigger([ CronTrigger(day_of_week='*', hour='9', minute='35', second='2', timezone="Asia/Kolkata")]
cron expression seems not support seconds level "*/5 * * * *"
Job class
public class ScrapperCandlesHistoryJob : IJob
{
private ILogger logger;
public ScrapperCandlesHistoryJob()
{
this.logger = LogManager.GetLogger("default");
}
async Task IJob.Execute(IJobExecutionContext context)
{
logger.Info($"@ {DateTime.Now} job {context.JobDetail.Key.Name} is executing...");
logger.Info("Trigger {0} in group {1} was fired", context.Trigger.Key.Name, context.Trigger.Key.Group);
}
}
any help would be greatly appreciated.