Spring.Net Quartz调度和代码配置

时间:2012-11-01 15:07:41

标签: spring.net quartz.net spring.codeconfig

有没有办法在Spring.Net中使用代码配置而不是xml文件配置Quartz调度(Spring.Scheduling.Quartz)?

我想在使用Spring.Net设置Quartz作业时完全避免使用配置文件。

1 个答案:

答案 0 :(得分:2)

这是一个使用与CodeConfig粘合在一起的基于编程和基于XML的作业调度的示例。

[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上下文中获得。