首页 > 其他分享 >通过Quartz 进行定时任务

通过Quartz 进行定时任务

时间:2022-09-05 16:34:33浏览次数:79  
标签:Quartz 创建 任务 public job scheduler 定时 Logger

小记一下通过Quartz 进行轮询数据库从而进行自动打印的需求。

一:首先通过NuGet引用Quartz,Quartz依赖Common.Logging和Common.Logging.Log4Net1211,所以同时需要引用这两个DLL,Common.Logging.Log4Net1211最新版本名称是Common.Logging.Log4Net1213,引用即可。

二:创建Job,基础代码如下

 1 /// <summary>
 2     /// 自动打印job
 3     /// </summary>
 4     [DisallowConcurrentExecution]
 5     public class AutoPrintJob : IJob
 6     {
 7         public async Task Execute(IJobExecutionContext context)
 8         {
 9             await Task.Run(() =>
10             {
11                //具体处理逻辑
12             });           
13         }
14     }
View Code

三:创建Scheduler,基础代码如下

 1  public class PrintJobScheduler
 2     {
 3         public static IScheduler scheduler;
 4         public static void Start()
 5         {
 6             try
 7             {
 8                 Logger.Log($"开始创建自动打印任务", Logger.Category.General, Logger.Severity.Information);
 9                 //创建调度单元
10                 Task<IScheduler> tsk = StdSchedulerFactory.GetDefaultScheduler();
11                 //不能注释,注释掉添加调度池的时候会报错
12                 scheduler = tsk.Result;
13                 //2.创建一个具体的作业即job (具体的job需要单独在一个文件中执行)
14                 IJobDetail job = JobBuilder.Create<AutoPrintJob>().WithIdentity("AutoPrintIdentity").Build();
15                 string isDebug = ConfigurationManager.AppSettings["IsDebug"].ToString();
16                 string cronExpression =  GetLoopInterval();
17                 //3.创建并配置一个触发器即trigger 
18                 ITrigger _CronTrigger = TriggerBuilder.Create()
19                   .WithIdentity("TriggerAutoPrint")
20                   .WithCronSchedule(cronExpression) //秒 分 时 某一天 月 周 年(可选参数) 
21                   .Build()
22                   as ITrigger;
23                 //4.将job和trigger加入到作业调度池中
24                 scheduler.ScheduleJob(job, _CronTrigger);
25                 //5.开启调度
26                 scheduler.Start();
27                 Logger.Log($"创建自动打印任务成功", Logger.Category.General, Logger.Severity.Information);
28             }
29             catch (Exception ex)
30             {
31                 Logger.Log($"创建自动打印任务失败,错误信息:"+ex, Logger.Category.ErrorLog, Logger.Severity.Error);
32             }
33         }
34         public static string GetLoopInterval()
35         {
36             //获取配置文件任务循环间隔
37             int intervalConfig = 1;
38             if (ConfigurationManager.AppSettings["AutoPrintIntervalTime"]!=null)
39             {
40                 intervalConfig = Convert.ToInt32(ConfigurationManager.AppSettings["AutoPrintIntervalTime"]);
41             }
42             return intervalConfig.ToString();
43         }
44     }    
View Code

四:在Global.axax调用Scheduler:

 

标签:Quartz,创建,任务,public,job,scheduler,定时,Logger
From: https://www.cnblogs.com/Jiej818/p/16658639.html

相关文章

  • Linux之定时任务crontab
      常用命令:#查看当前用户下所有的定时任务crontab-l#查看指定用户下的定时任务crontab-l-uwww#编辑定时任务crontab-e 在Linux中经常使用......
  • 计算机网络学习任务
    自学分析题请分析,一个5KHz的无噪声信道能够达到的最大数据传输率是多少?为什么?假设你使用的宽带是100Mbps,你要把一个0.5GB的文件发送出去,理论上要花多长时间?举例......
  • 【问题】为什么 System.Timers.Timer 更改间隔时间后的第一次触发时间是设定时间的三
    【问题】为什么System.Timers.Timer更改间隔时间后的第一次触发时间是设定时间的三倍?独立观察员2022年9月4日在编写“Wifi固定器 [1]”程序时,按如下方式使......
  • Spark任务调度机制【转】
    Spark任务调度机制论述在生产环境下,Spark集群的部署方式一般为YARN-Cluster模式。Driver线程主要是初始化SparkContext对象,准备运行所需的上下文,然后一方面保持与Applica......
  • 执行一个crontab任务,执行完之后总是给我发邮件,怎么取消发邮件?
    执行一个crontab任务,执行完之后总是给我发邮件,怎么取消发邮件?-Linux新手园地-Chinaunix http://bbs.chinaunix.net/thread-4138145-1-1.htmlcrontab的默认输出对象是......
  • Linux计划任务 crontab中%处理
    【Linux】Linux计划任务crontab中%处理unexpectedEOF_ITPUB博客 http://blog.itpub.net/29475508/viewspace-2099930/使用date+%Y%m%d形式,方便根据时间生成相应文......
  • Linux 定时器介绍
    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16651865.html曾经常去沙县小吃,就为了蹭上一碗4块钱的葱油拌面,......
  • 将mysql数据库定时备份到另一台服务器
    导出数据到本地当MySQL运行在Docker中时dockerexec-itmysqlmysqldump-uroot-p密码数据库名>/home/数据库名.sql没有运行在Docker中时,只需要执行后半部分常规......
  • 【JS每日刷题】栈与任务队列1
    代码题目来源于前端面试题宝典constfoo=()=>console.log('First')constbar=()=>setTimeout(()=>console.log('Second'))constbaz=()=>console.log('T......
  • 07_Linux基础-计划任务-备份脚本-变量定义和使用
    @目录07_Linux基础-计划任务-备份脚本-变量定义和使用一.计划任务cronat二.计划任务练习-备份脚本计划任务实验重定向练习总结三.黑客-计划任务四.变量定义和使用07_L......