如何在ServiceStack中实现Quartz

时间:2015-11-13 19:23:48

标签: c# servicestack quartz-scheduler quartz.net

我环顾四周,找不到使用Quartz(或任何类似的作业调度程序)和ServiceStack的可靠的最新参考。我想做以下事情:

  • 运行Quartz或类似的调度程序作为服务(以避免IIS问题)
  • 我们的项目使用ServiceStack,所以我想用它来熟悉IoC等等。

以这种方式在带有调度程序的Windows服务中使用ServiceStack是否有意义?有更好的安排吗?如果它有效,我如何在ServiceStack中运行Quartz?

我脑子里有很多不同的想法,但需要帮助整理一个有凝聚力的计划,所以非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用由ServiceStack.Quartz友好制作的wwwlicious

答案 1 :(得分:2)

一个出色的工作调度程序是Hangfire(Hangfire.io)。个人喜欢它比石英更多。

使用servicestack附带的现有IoC Funq容器注入Hangfire并不容易。但请看一下这个question & answer

答案 2 :(得分:2)

我在这里参加派对有点晚了,但我处于同样的境地。我无法想到为什么在Self Hosted ServiceStack应用程序中实现Quartz Scheduler会是一个坏主意。

我很快创建了一个将Quartz Scheduler与ServiceStack Funq IoC集成的库,它基本上允许您使用ServiceStack设置Quartz:

//// This method scans the assembly for the Jobs
container.RegisterQuartzScheduler(typeof(HelloJob));

//// Resolve the Quartz Scheduler as normal
var scheduler = container.Resolve<IScheduler>();

//// Start Quartz Scheduler
scheduler.Start();

您将能够像平常一样使用Quartz Scheduler。

我提供了一个如何在这里使用的示例:https://github.com/CodeRevver/ServiceStackWithQuartz

NuGet在这里:https://www.nuget.org/packages/ServiceStack.Funq.Quartz/

正如我所说,我在几个小时内完成了这项工作,看它是否适合我的目的。如果您想修改它以执行您希望它执行的操作,请随时修改它。

如果您有兴趣,我即将在此处撰写关于该帖子的博文:http://michaelclark.tech/2016/04/16/creating-a-servicestack-windows-service-that-uses-quartz/