zoukankan      html  css  js  c++  java
  • C#定时调用的Quartz项目设计和实现

    1.首先必须清楚一些概念:调度器,作业,定时触发器,如下

    2.关于一个Quartz定时调用的项目的设计和实现

      把需要的东西抽象出来,比如把作业的一些属性,如作业的名称等,如下

     1 public int id { get; set; }
     2 /// 任务名称
     3 public string jobname { get; set; }
     4 
     5 /// job配置的时间
     6 public string jobcron { get; set; }
     7 
     8 /// job的分组的名称
     9 public string jobgroup { get; set; }
    10 
    11 /// 作业当前的状态,0.加入调度队列 1.未加入调度队列 2.暂停
    12 public int jobtype { get; set; }
    13 
    14 public string jobtypename { get; set; }
    15 
    16 public string jobdescription { get; set; }
    17 
    18 /// 作业的开始时间
    19 public DateTime createtime { get; set; }
    20 
    21 /// 0删除,1使用
    22 public int type { get; set; }
    23 
    24 public string jobtrigger { get; set; }
    25 
    26 public string jobtriggergroup { get; set; }
    27 
    28 ///作业的下次执行时间
    29 
    30 public DateTime nexttime { get; set; }
    31 
    32 /// 作业的上次执行时间
    33 
    34 public DateTime pretime { get; set; }
    View Code

    3.项目整体设计

     4.因为是c#代码,所以采用的是自托管的方式

      可以参考下面

      https://www.itsvse.com/thread-3454-1-1.html

    5.把Quartz里面的调度器,定时器,作业写一个通用类

     public static class JobManager
    { 
            public static void CreateScheduler()
            {
    
                ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
                sched = schedulerFactory.GetScheduler();
    
                sched.Start();
    
            }
    
            ///这边的type类型是通过反射方式加载进来的job作业类型如2里面的对象
            public static DateTimeOffset AddJob(Type jobType, string crons)
            {
                //创建作业的信息类
                IJobDetail jobCheck = JobBuilder.Create(jobType).
                    WithIdentity(jobType.Name, jobDataGroup).
                    UsingJobData(jobDataGroup, jobType.FullName)
                    .Build();
    
                //创建时间篇
                ICronTrigger CronTrigger = new CronTriggerImpl(jobType.Name + jobtrigger, TriggerGroup, crons);//, crons
                return sched.ScheduleJob(jobCheck, CronTrigger);
            }
    }
    View Code

     6.总结,学习一个新东西先了解整体的框架和设计,再花时间去了解,其实源代码里面的demo是最好的

     

  • 相关阅读:
    访问修饰符的权限。
    字符编码
    3/11 作业
    3/10 作业
    作业 3/9
    流程控制之for循环
    Exception in createBlockOutputStream
    windows上传文件到 linux的hdfs
    win10 配置 hadoop-2.7.2
    hadoop 源码编译
  • 原文地址:https://www.cnblogs.com/hkyyqqq/p/9751104.html
Copyright © 2011-2022 走看看