Я хочу реализовать Quartz.Net
в моем проекте C # .Net.Я синхронизирую 1 FTP и загружаю все файлы каждые 10 минут.Как только я скачаю каждый файл, я собираюсь обработать их все.Если будет больше файлов, это займет больше времени, чем 10 минут.
Как запустить 1 экземпляр задания и, если триггер запускает любой другой экземпляр задания, он не должен запускаться и утилизировать его?
Мой код:
КварцКласс планировщика
public class ResponseFileSyncJobScheduler
{
public static async Task StartResponsefileSyncker()
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = await sf.GetScheduler();
//DateTimeOffset runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
IJobDetail job = JobBuilder.Create<ResponseFileJob>()
.WithIdentity("ResponsefileSync", "sgroup")
.Build();
ITrigger trigger = TriggerBuilder.Create().WithIdentity("TriggerfileSync", "sgroup")
.WithDailyTimeIntervalSchedule
(s => s.WithIntervalInMinutes(10).OnEveryDay())
.StartAt(DateTime.Now.AddMinutes(1))
.Build();
await sched.ScheduleJob(job, trigger);
await sched.Start();
await Task.Delay(TimeSpan.FromSeconds(65));
}
}
Класс работы кварца
public class QuartzJobSOGET : IJob
{
internal static readonly Task CompletedTask = Task.FromResult(true);
public virtual Task Execute(IJobExecutionContext context)
{
JobKey jobKey = context.JobDetail.Key;
//Write Date Time to File - to ensure Quartz Scheduler Working
WritetoFile(DateTime.Now.ToString());
//Sync every present file and process
//once processed delete file from server and make log,
//will take 1 min to process single file (almost)
SyncResponseFilefromSOGETftp();
return CompletedTask;
}
}