我了解到您将 Quartz 解决方案编译成可以作为 Windows 服务运行的 exe。而且这个 Quartz 服务器以某种方式运行作业。我没有得到的是,我将所有实际工作的工作代码放在哪里?就像假设我希望我的“工作”调用一个存储过程,或者每小时调用一个 Web 服务。或者如果我有想要执行的本地 VB 代码怎么办?(而且我不想创建另一个从命令行调用的独立 VB 应用程序。)所有这些类型的作业配置将在哪里存储、编码和配置并不明显。
问问题
3682 次
1 回答
1
我建议你先阅读教程。您可以在 Jay Vilalta 的博客
上找到很多有用的信息。
Quartz.Net 入门:第 1 部分
Quartz.Net 入门:第 2 部分
Quartz.Net 入门:第 3 部分
和
或者
然后您可以查看github 代码并尝试使用文档非常齐全的示例。
更新:
服务器是调度程序。
它是一个 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);
}
}
你可以在这里下载一个测试项目(VerySimpleQuartzApp)。
上面的应用程序不存储触发器/作业信息。
您可以决定是否要将作业/触发器的信息保存在 XML 文件中,如此处和此处所述。
或者,您可以将作业/触发器存储在数据库中,以便调度程序(通常是 Windows 服务)可以读取这些信息并运行作业。
如果您正在寻找一个可以与服务器通信(通过远程处理)并安排作业并运行它的示例,那么就是这样。
有一些开源项目(管理器)可用于启动/停止或安排作业。在这里阅读我的答案。
于 2013-01-24T10:27:00.957 回答