在Quartz.Net中运行作业

时间:2013-01-23 21:31:11

标签: vb.net quartz.net

据我所知,您将Quartz解决方案编译为可以作为Windows服务运行的exe。而且这个Quartz服务器以某种方式运行作业。我没有得到的是,我在哪里放置实际完成工作的所有工作代码?就像让我们说我希望我的“工作”来调用存储过程,或每小时调用一个Web服务。或者如果我有原生的VB代码我想执行怎么办? (而且我不想创建另一个从命令行调用的独立VB应用程序。)所有这些类型的作业配置都将被存储,编码和配置的地方并不明显。

1 个答案:

答案 0 :(得分:1)

我建议你先阅读教程。
你可以在Jay Vilalta blog找到很多有用的信息。

Getting Started With Quartz.Net: Part 1
Getting Started With Quartz.Net: Part 2
Getting Started With Quartz.Net: Part 3

Scheduling Jobs Programmatically in Quartz.Net 1.0

Scheduling Jobs Programmatically in Quartz.Net 2.0

然后您可以查看github code并尝试examples,这些文档都有详细记录。

<强>更新

服务器是调度程序 它是一个Windows服务应用程序,它不断运行并运行您使用客户端应用程序安排的工作 您甚至可以像我一样编写自己的服务器(Windows服务),因为我不想使用远程处理来与该层进行通信。

您可以决定在控制台应用程序中安排和运行作业(我不建议这样做) 几行代码:

class Program
{
    public static StdSchedulerFactory SchedulerFactory;
    public static IScheduler Scheduler;

    static void Main(string[] args)
    {
        SchedulerFactory = new StdSchedulerFactory();
        Scheduler = SchedulerFactory.GetScheduler();

        var simpleTrigger = TriggerBuilder.Create()
                 .WithIdentity("Trigger1", "GenericGroup")
                 .StartNow()
                 .WithSimpleSchedule(x => x.RepeatForever().WithIntervalInSeconds(5))
                 .Build();

        var simpleJob = JobBuilder.Create<SimpleJob>()
                                     .WithIdentity("simpleJob", "GenericGroup")
                                     .Build();

        Scheduler.ScheduleJob(simpleJob, simpleTrigger);

        Console.WriteLine("Scheduler started");

        Scheduler.Start();

        Console.WriteLine("Running jobs ...");

        Console.ReadLine();

        Scheduler.Shutdown(waitForJobsToComplete: false);

        Console.WriteLine("Shutdown scheduler!");

    }
}

这是工作:

public class SimpleJob : IJob
{
    public virtual void Execute(IJobExecutionContext context)
    {
        JobKey jobKey = context.JobDetail.Key;
        Console.WriteLine("{0} Executing job {1} ", DateTime.Now.ToString(), jobKey.Name);
    }
}

您可以下载测试项目here VerySimpleQuartzApp )。

上述应用程序不存储触发器/作业信息。

您可以根据herehere说明决定是否要将作业/触发器的信息保存在XML文件中。 或者您可以将作业/触发器存储在database中,以便调度程序(通常是Windows服务)可以读取这些信息并运行作业。

如果您正在寻找一个可以与服务器通信的示例(通过远程处理)并安排作业并运行它,this就是那个。

您可以使用一些开源项目(经理)来启动/停止或安排作业。阅读我的回答here