Планирование Spring.Net Quartz и настройка кода

Есть ли способ настроить планирование Quartz (Spring.Scheduling.Quartz) в Spring.Net, используя конфигурацию кода, а не файлы XML?

Я хочу полностью избежать использования файлов конфигурации при настройке заданий Quartz с помощью Spring.Net.

1 ответ

Решение

Вот пример, который использует как программирование, так и планирование на основе XML, склеенные вместе с CodeConfig.

[Definition]
public virtual IScheduler Scheduler()
{
    var scheduler = SchedulerFactory().GetScheduler();
    var dataCleanUpJob = JobBuilder.Create<DataCleanUpJob>()
        .WithIdentity("DataCleanUpJob", "System")
        .StoreDurably(true)
        .Build();

    ITrigger dataCleanUpTrigger = TriggerBuilder.Create().WithSimpleSchedule(x => x.WithIntervalInHours(1)).Build();
    scheduler.ScheduleJob(dataCleanUpJob, dataCleanUpTrigger);

    scheduler.StartDelayed(TimeSpan.FromSeconds(10));
    return scheduler;
}

[Definition]
public virtual ISchedulerFactory SchedulerFactory()
{
    var properties = new NameValueCollection();

    // job initialization plugin handles our xml reading, without it defaults are used
    properties["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz";
    properties["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.config";

    var factory = new StdSchedulerFactory(properties);
    return factory;
}

Ключевыми моментами здесь являются наличие синглтона для фабрики планировщика и фактического планировщика, чтобы они были доступны из контекста Spring.

Другие вопросы по тегам