ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十七节--Quartz与ABP框架Abp.Quartz及扩展

ABP+AdminLTE+Bootstrap Table权限管理系统一期
Github:https://github.com/Jimmey-Jiang/ABP-ASP.NET-Boilerplate-Project-CMS

Quartz简介

Quartz.NET是一个开源的作业调度框架,是 OpenSymphonyQuartz API 的.NET移植,它用C#写成,可用于winformasp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等.

参考

对Quartz.NET不熟悉的可以先看下
官方学习文档:http://www.quartz-scheduler.net/documentation/index.html
使用实例介绍:http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html
官方的源代码下载:http://sourceforge.net/projects/quartznet/files/quartznet/

特性
它一些很好的特性:
1. 支持集群,作业分组,作业远程管理。
2. 自定义精细的时间触发器,使用简单,作业和触发分离。
3. 数据库支持,可以寄宿Windows服务,WebSitewinform等。

Quartz框架的一些基础概念解释:

名称 描述
Scheduler 作业调度器。
IJob 作业接口,继承并实现Execute, 编写执行的具体作业逻辑。
JobBuilder 根据设置,生成一个详细作业信息(JobDetail)。
TriggerBuilder 根据规则,生产对应的Trig

实战

  • Web.config配置

基础概念我就懒得讲了,你也懒得听了,直接上代码吧。
首先配置一下Web.config,其实这步可有可无,可以直接跳过,只是为了配置一些常量,获取固定的时间,但是不是必要的。

    <sectionGroup name="JobList">
      <section name="Job" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </sectionGroup>
  <JobList>
    <Job>
      <!--这里是一个任务节点-->
      <add key="Url" value="http://www.baidu.com" />
      <!--需要访问的Url-->
      <add key="Hour" value="10" />
      <!--开始时间小时-->
      <!--开始时间小时,注意:这里的小时为0-23,如果是1点的话就是1,而不是01-->
      <add key="Minute" value="30" />
      <!--开始时间分钟-->
      <!--开始时间分钟,注意:同上0-59-->
    </Job>
  </JobList>
  • 创建service
    创建ISystemSchedulerService以及SystemSchedulerService,代码上面都有详细的注释,我就不重复了。
    接口:
public  interface ISystemSchedulerService: IApplicationService
    {
        void StartScheduler();
    }

service: SystemSchedulerService

    public class SystemSchedulerService : ISystemSchedulerService
    {
        private IScheduler _scheduler;
        public ILogger _Logger { get; set; }
        public SystemSchedulerService()
        {
            _Logger = NullLogger.Instance;
        }

        public void StopScheduler()
        {
            _scheduler.Shutdown();
        }

        public void StartScheduler()
        {
            try
            {

                //这里读取配置文件中的任务开始时间
                int hour = int.Parse(((NameValueCollection)ConfigurationManager.GetSection("JobList/Job"))["Hour"]);
                int minute = int.Parse(((NameValueCollection)ConfigurationManager.GetSection("JobList/Job"))["Minute"]);


                ISchedulerFactory schedulerFactory = new StdSchedulerFactory();//内存调度
                _sched
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值