我知道您将Quartz解决方案编译为可作为Windows服务运行的exe文件。而且这个Quartz服务器以某种方式运行作业。我没有得到的是,我在哪里放置了所有工作代码,这些代码实际上完成了这项工作?比方说,我希望我的“工作”调用存储过程,或者每小时调用一次Web服务。或者如果我有我想要执行的本机VB代码呢? (而且我不想创建另一个独立的VB应用程序,它可以从命令行调用。)所有这些类型的作业配置将被存储,编码和配置的位置并不明显。在Quartz.Net中运行作业
0
A
回答
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这是非常有据可查的。
UPDATE:
服务器是调度。
这是一个不断运行的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)。
上面的应用程序不存储触发器/作业信息。
您可以决定是否要将作业/触发器的信息保存在XML文件中,如here和here所述。
或者您可以将作业/触发器存储在database中,以便调度程序(通常是Windows服务)可以读取这些信息并运行作业。
如果您正在寻找一个可以与服务器进行通信(通过远程处理)并安排作业并运行它的示例,则可以使用this。
有几个开源项目(经理),您可以使用它来启动/停止或计划作业。阅读我的答案here。
相关问题
- 1. Quartz.NET - 作业不运行?
- 2. Quartz.Net中的长时间运行作业
- 3. 在Quartz.net中从正在运行的作业中获取数据
- 4. 在Quartz.net中的作业执行时间
- 5. 在Quartz.net中,一次运行一个作业的一个实例
- 6. 如何让Quartz.net作业在单线程的公寓中运行?
- 7. 如何在单独的AppDomain中运行Quartz.NET作业?
- 8. Quartz.net作业调度
- 9. 在ADOStore运行作业时出现Quartz.net错误
- 10. 是否可以在UI线程上运行quartz.net作业?
- 11. 在Quartz.Net中调度依赖作业
- 12. 跨多个Azure实例同时运行Quartz.Net作业
- 13. Quartz.Net:防止不同作业类型同时运行
- 14. Quartz.Net作业存储查询
- 15. Quartz.Net(2.2.3)安排新作业
- 16. Quartz.NET - 已暂停的作业
- 17. 用Quartz.Net创建作业
- 18. Quartz.NET作业使用期限
- 19. 使用Quartz.net在群集中的每台机器上运行IStateful作业
- 20. Quartz.NET中的自动作业命名
- 21. Quartz.net在并发作业之间暂停
- 22. 如何从单独的程序集中创建Quartz.NET运行作业?
- 23. 如何检查所有作业是否在关机前完成运行? - Quartz.net
- 24. 在故事中运行并行作业
- 25. 在Jenkins中运行并行作业
- 26. Quartz.NET - 长时间运行的工作?
- 27. 在后台运行作业
- 28. 在quartz.net xml作业定义文件中使用参数配置作业
- 29. 运行Cron作业
- 30. Quartz.Net,SQL Server,作业被堵塞
谢谢,我读过发布之前的所有内容。我看到的唯一实际例子是如何从命令行运行单独的EXE文件,这是我不想做的事情。所有的代码示例...你把代码放在哪里?在石英解决方案本身?简单调用Web服务怎么样?我是否必须构建一个完整的应用才能调用该服务?这是我在所有教程中找不到的实际实现细节。 –
我已经更新了我的答案。希望它有帮助。 – LeftyX
非常有帮助!我快到了。所以我有你说的调度器。我可以在某处使用客户端的方式定义日程安排,作业等。但是我在哪里放置了工作的实际工作代码?我没有看到xml作业会告诉调度程序究竟要运行什么。我把DLL放在什么地方?另外,每小时一次简单的Web服务调用又如何?我需要一个完整的迷你exe或dll来实现简单的事情吗? –