Это мое требование.Планирование работы с использованием кварца - Нужна оценка
Главная Работа: Job1 (по расписанию запускать каждые 5 минут) Дочернее Работа: Job2, Job3, Job4, Job5 и т.д. (все вспомогательные работы будут иметь те же определения, но только JobData будет отличаться)
В течение каждое выполнение «Job1» одного вспомогательного задания будет запланировано только один раз. Пример: первого выполнение Job1: Работа «Job2» будет назначена 2 минуты от DateTime.Now второй Казни Job2: Работа «Job3» будет назначена 2 минуты от DateTime.Now ...
сейчас , Я хочу, чтобы те же самые запланированные использовались всеми заданиями. Мой вопрос заключается в том, использует ли кварц один и тот же планировщик для всех заданий или должен ли мы программно установить это?
Я использую службу Windows для запуска и остановки всего процесса. Вот код службы Windows.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;
namespace TestScheduling
{
class TestMainClass : ServiceBase
{
TestJobScheduler scheduler = new TestJobScheduler();
public TestMainClass()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
scheduler.StartScheduler();
scheduler.ScheduleMainJob();
}
catch (Exception e)
{
//Capture Exception
}
}
protected override void OnStop()
{
scheduler.StopScheduler();
}
}
}
Вот код для класса TestJobScheduler.
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.Odbc;
using Quartz;
using Quartz.Impl;
namespace TestScheduling
{
class TestJobScheduler : ITaskScheduler
{
IScheduler sched;
public void ScheduleMainJob()
{
....
sched = getScheduler();
sched.ScheduleJob(job1,trig);
....
ScheduleSubsidiaryJob("job2")
}
public void ScheduleSubsidiaryJob(String jobname)
{
...
/*Create New Trigger and Associate Subsidiary Job with new JobData*/
sched = getScheduler();
sched.ScheduleJob(trig);
}
public IScheduler getScheduler()
{
ISchedulerFactory sf = new StdSchedulerFactory();
return sf.GetScheduler();
}
public void StartScheduler(IJobDetail job, ISimpleTrigger trigger)
{
sched = getScheduler();
sched.Start();
}
public void StopScheduler()
{
if (sched != null)
{
sched.Shutdown();
}
}
}
}
Еще один момент заключается в том, что я использую AdoJobStore с OracleDelegate.
Может ли кто-нибудь сказать мне, правильно ли я делаю это?
Привет, Марко, .. Спасибо за входы .. Я только что добавил Quartz.dll к моим проектам и его работе. Я НЕ развернул службу Windows Quartz Server. Я назначил задания с помощью триггеров и его работоспособность. Я хочу знать, что «кто» контролирует триггеры и выполняет работу? – wesfaith
Это сочетание разных актеров. Но основной цикл можно найти в QuartzSchedulerThread, который запрашивает триггеры из хранилища заданий, а затем выполняет их внутри оболочки запуска задания. –