码迷,mamicode.com
首页 > Web开发 > 详细

基于进程的Quartz.NET管理系统QuartzService(一)

时间:2016-03-29 23:55:35      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

需求

在处理定时任务大家可能都用过Quartz.NET,但在生产环境中大家肯定也遇到过如下的问题:

  1. 发布的时候需要停掉所有的Job,再整个一起打包发布
  2. 没有管理界面(其实在github也有几个这方面的项目,如:CrystalQuartz),不能很好的做到实时监控。

由于在生产环境中有以上的问题,所以我抽空就写了一个基于Quartz.NET的QuartzService。

?

原理

因为Quartz.NET中,任务的管理是其于线程的,所以在管理Job的时候并不能将Job隔离开来,所以才有了问题一。在QuartzService中我采用的是进程的方式进行管理。即一个执行程序包含一个Scheduler与一个Job,这样就对任务进行了隔离,但这也意味着更大的资源消耗。对此我的应对策略是一Scheduler可以包含多少Job但具体的实现可能需要读者自行参考两个项目。在后续的文章中我会介绍如何进行部署。

?

对于管理界面,则是采用的RemoteScheduler进行控制。因为QuartzService采用的是进程的方式运行任务,所以在管理上还加了对任务进程的管理。

?

对于任务的解耦

在QuartzService中并没有对于任务的调用,采用了反射的方式。这个主要出于两个方面的考虑:1.对于管理中可能出现的多版本的.NET Framework(我现在的项目中就有这个问题);2.将任务做成可配置,这样方便部署。但是以上两种考虑就造成了不能对Scheduler进行监听,对于这个这个问题读者可以自己再重写一个Scheduler管理程序。这个后续会做介绍。

?

Quartz.NET: http://www.quartz-scheduler.net/

QuartzService: https://github.com/BarlowDu/QuartzService

基于进程的Quartz.NET管理系统QuartzService(一)

标签:

原文地址:http://www.cnblogs.com/gangtianci/p/5335355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!