任务调度平台
我做了也有三四年的软件研发了,一直想把一些工作中用到的一些常用的模型给做个总结,所以决定写下这个系列来记录下,希望大家可以一起讨论讨论。
针对一个问题,大家可能以前都遇到过,就是假如你希望在晚上系统比较空闲的时候执行一些汇总的统计或者一些复杂的计算工作。那么你是不是每天晚上都会去点点按钮执行一下呢,那肯定不会,或许你会说你会用windows计划任务来做定时任务又或许说你写个windows service来监控。可是,这些任务如果很多了,你就会感觉到很难管理,而且这些任务也很难跟进,那么任务调度平台,就是你所需要的。恩,我们或许都尝试过自己去开发一些简单的管理平台,可是对于开源资源比较熟悉的人,或许会知道有这样一个平台,已经做得很好,很专业了,那就是Quartz开源任务调度,为你提供统一的管理平台、任务执行异常的处理和任务的情况跟进。
那么,怎么使用呢?写下来,希望对大家有帮助。首先,大家先上quartz.net的网站下载开源的代码,然后,打开里面包含的server目录下面的项目:
1、Quartz.Server.Core 这项目主要是Quartz服务搭建的核心项目组件,包括Quartz的自定义配置类和Host服务的创建工厂等,嗯,基本不需要修改。
2、Quartz.Server.Console 和Quartz.Server.Service分别是控制台和Service两种Host的方式,控制台是提供给测试用的,Service是基本稳定之后安装到服务器上用。基本已经够用了,也可以进行相应的扩展,已达到你的目的。
3、对于Quartz任务的存放载体,有两种方式:存放内存中和存放数据表中,那么内存方式性能稍高,可是稳定性就不如数据表了。我是选择了数据表方式,这样对于这些任务,我可以很方便的通过管理工具来管理这些数据表,实现对任务的管理和跟进。所以,需要将database下面的脚本执行一下,创建相应的应用的数据表,然后,修改一下Quartz.Server.Console 项目中的配置文件quartz.config:
# You can configure your scheduler in either <quartz>
configuration section
# or in quartz properties file
# Configuration section has precedence
quartz.scheduler.instanceName = DEFAULT
quartz.dataSource.myDs.connectionString=Server=192.168.70.121;Database=AFLY_TEST;Persist Security Info=True;User ID=Yansheng;Password=123456 quartz.dataSource.myDs.provider=SqlServer-20
# configure thread pool info
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
quartz.threadPool.threadCount = 2
quartz.threadPool.threadPriority = Normal
# job initialization plugin handles our xml reading, without it defaults are used -->
quartz.jobStore.type= Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz
quartz.jobStore.tablePrefix=QRTZ_
quartz.jobStore.dataSource=myDs
quartz.jobStore.useProperties=false
quartz.jobStore.selectWithLockSQL=SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = @lockName
4、然后,你就可以在相应的数据表中设置相应的任务了:
作业表QRTZ_JOB_DETAILS中新增记录:
NoticeManage | Notice | 同行反调 | BFLY.BIL.NoticeManage, BFLY | 0 | 0 | 1 | 1 |
在触发器表QRTZ_CRON_TRIGGERS中新增记录:
NoticeManageTrg | Notice | 0 */2 * * * ? | China Standard Time |
在触发器和作业关联表QRTZ_TRIGGERS中新增记录:
NoticeManageTrg | Notice | NoticeManage | Notice | 0 | NULL | 634668667200000000 | 634668666000000000 | 5 | WAITING | CRON | 634657344710000000 | 0 | NULL | 0 | NULL |
5、运行Quartz.Server.Console就可以看到任务跑起来了,具体参数和说明待续。
posted on 2012-03-10 22:26 wu-yansheng 阅读(718) 评论(0) 编辑 收藏 举报