Как цепорить задания quartz.net с отдельными триггерами и обеспечить последовательное выполнение?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как цепорить задания quartz.net с отдельными триггерами и обеспечить последовательное выполнение?

Сообщение Anonymous »

Я использую quartz.net, чтобы назначить серию заданий, которые необходимо выполнять в последовательности. Я хочу, чтобы у каждой работы имелись свой собственный триггер, чтобы я мог видеть статус выполнения в пользовательском интерфейсе (Localhost: ****/Quartz), но я хочу убедиться, что каждая работа ждет предыдущей работы перед началом. Я пытался использовать JobchaingJoblistener, но, похоже, это не работает, так как задания запланированы с .StartNow (), даже если они привязаны. Вот моя текущая настройка: < /p>

Код: Выделить всё

public static IScheduler RegisterJobs(IScheduler scheduler, IapConfiguration config)
{

#region Upload Group scheduling
var uploadGroup = "UploadGroup";

// Create Job Keys
JobKey uploadJobKey1 = JobKey.Create(JobConstant.Upload_IGRecChannel, uploadGroup);
JobKey uploadJobKey2 = JobKey.Create(JobConstant.Upload_Languages, uploadGroup);
JobKey uploadJobKey3 = JobKey.Create(JobConstant.Upload_Education, uploadGroup);
JobKey uploadJobKey4 = JobKey.Create(JobConstant.Upload_IntWorkExperience, uploadGroup);
JobKey uploadJobKey5 = JobKey.Create(JobConstant.Upload_ExtWorkExperience, uploadGroup);

// Create Job Details
IJobDetail uploadJob1 = JobBuilder.Create()
.WithIdentity(uploadJobKey1)
.StoreDurably(true)
.Build();

IJobDetail uploadJob2 = JobBuilder.Create()
.WithIdentity(uploadJobKey2)
.StoreDurably(true)
.Build();

IJobDetail uploadJob3 = JobBuilder.Create()
.WithIdentity(uploadJobKey3)
.StoreDurably(true)
.Build();

IJobDetail uploadJob4 = JobBuilder.Create()
.WithIdentity(uploadJobKey4)
.StoreDurably(true)
.Build();

IJobDetail uploadJob5 = JobBuilder.Create()
.WithIdentity(uploadJobKey5)
.StoreDurably(true)
.Build();

// Create Triggers for each job
ITrigger uploadJobTrigger1 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_IGRecChannel + "Trigger", uploadGroup)
.WithCronSchedule(config.UploadGroupCron)
.Build();

ITrigger uploadJobTrigger2 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_Languages + "Trigger", uploadGroup)
.StartNow()
.Build();

ITrigger uploadJobTrigger3 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_Education + "Trigger", uploadGroup)
.StartNow()
.Build();

ITrigger uploadJobTrigger4 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_IntWorkExperience + "Trigger", uploadGroup)
.StartNow()
.Build();

ITrigger uploadJobTrigger5 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_ExtWorkExperience + "Trigger", uploadGroup)
.StartNow()
.Build();

// Configure Job Listener for chaining
JobChainingJobListener listener2 = new JobChainingJobListener("Upload  Chain");
listener2.AddJobChainLink(uploadJobKey1, uploadJobKey2);
listener2.AddJobChainLink(uploadJobKey2, uploadJobKey3);
listener2.AddJobChainLink(uploadJobKey3, uploadJobKey4);
listener2.AddJobChainLink(uploadJobKey4, uploadJobKey5);

scheduler.ListenerManager.AddJobListener(listener2, GroupMatcher.GroupEquals(uploadGroup));

// Schedule the first job with its trigger
scheduler.ScheduleJob(uploadJob1, uploadJobTrigger1);
scheduler.ScheduleJob(uploadJob2, uploadJobTrigger2);
scheduler.ScheduleJob(uploadJob3, uploadJobTrigger3);
scheduler.ScheduleJob(uploadJob4, uploadJobTrigger4);
scheduler.ScheduleJob(uploadJob5, uploadJobTrigger5);

return scheduler;
#endregion Upload Group scheduling
}
< /code>
Если я просто использую что -то вроде ниже, триггеры не отображаются на пользовательском интерфейсе (что очевидно) < /p>
   ITrigger uploadJobTrigger1 = TriggerBuilder.Create()
.WithIdentity(JobConstant.Upload_IGRecChannel + "Trigger",  uploadGroup)
.WithCronSchedule(config.UploadGroupCron)
.Build();

// Configure Job Listener for chaining
JobChainingJobListener listener2 = new JobChainingJobListener("Upload Chain");
listener2.AddJobChainLink(uploadJobKey1, uploadJobKey2);
listener2.AddJobChainLink(uploadJobKey2, uploadJobKey3);
listener2.AddJobChainLink(uploadJobKey3, uploadJobKey4);
listener2.AddJobChainLink(uploadJobKey4, uploadJobKey5);

scheduler.ListenerManager.AddJobListener(listener2, GroupMatcher.GroupEquals(uploadGroup));

// Schedule and add jobs sequentially
scheduler.ScheduleJob(uploadJob1, uploadJobTrigger1);
scheduler.AddJob(uploadJob2, false, true);
scheduler.AddJob(uploadJob3, false, true);
scheduler.AddJob(uploadJob4, false, true);
scheduler.AddJob(uploadJob5, false, true);
Вот лишь пример того, как выглядит пользовательский интерфейс с триггерами и статусами работы

Подробнее здесь: https://stackoverflow.com/questions/795 ... ntial-exec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»